About pdxcivic

pdxcivic assembles Portland-area civic data — council roll-call votes, the members who cast them, and legislation — into a single, source-cited canonical model. Every record carries provenance: the dataset it came from, when it was fetched, and a link back to the origin. This site is a read-only window onto that model.

Use the data directly

Everything here is served by a public, read-only API. Two surfaces over the same canonical model:

REST

Paginated lists and point lookups by OCD id:

GET /v1/vote-events?limit=25&q=forestry
GET /v1/votes
GET /v1/persons
GET /v1/bills
GET /v1/vote-events/ocd-vote/country:us/state:or/place:portland/100-2023

The full schema is self-describing at /v1/openapi.json.

GraphQL

For relational queries — a vote event's roll call, or a member's whole record — in one round trip:

{
  voteEvent(ocdId: "ocd-vote/country:us/state:or/place:portland/100-2023") {
    docTitle
    result
    votes { voteOption voter { fullName } }
  }
}

Coverage today

The votes graph is Portland City Council; bills are sourced from the Oregon Legislature. More sources and relations (bill sponsors, payments, documents) land as they're promoted into the canonical model.