Data dictionaries

Change

One entry in the feed of every endorsement added, changed or deleted, for keeping a copy up to date.

Returned by
GET /v1/changes

How it connects

  • endorsement_id is the endorsement changed. The same change is in that endorsement’s history.

Good to know

  • Changes are in id order. Keep the next_cursor of the last page you read and pass it next time, so nothing is missed or repeated.
  • The endorser’s slug and name are null if the endorser has since been removed.

Fields

FieldTypeMeaningExample
idintegerThe change’s id: increasing and unique. Pages are in this order.512330
atstringISO 8601 date and time with time zoneWhen the change was made.2026-11-02T18:04:11.902Z
changestringWhat happened to the endorsement: created, updated or deleted.created, updated, deleted meaningsupdated
changedarray of stringFor updated: the fields that changed. Empty otherwise.choice_id, rank, statement, source_url, published_on meanings["rank"]
endorsement_idintegerThe endorsement changed.90211
endorserobjectWho made the endorsement.—
endorser.idintegerEndorser id.512
endorser.slugstringor nullEndorser slug; null if the endorser has since been removed.sf-labor-council
endorser.namestringor nullEndorser name; null if the endorser has since been removed.San Francisco Labor Council
endorser.categoryEndorser categoryor nullThe endorser’s category.—
contestobjectThe contest.—
contest.idintegerContest id.4410
contest.titlestringTitle as printed on the ballot.Member, Board of Supervisors, District 8
electionobjectThe contest’s election.—
election.idintegerElection id.3
election.slugstringElection slug.ca-2026-11-03-general
election.datestringYYYY-MM-DDElection day.2026-11-03
beforeobjector nullThe values before the change; null for created.—
before.choice_idintegerThe choice endorsed.20931
before.choice_labelstringor nullThat choice’s label as printed; null if the choice has since been removed from the ballot.Jane Doe
before.rankintegeror nullRanked choice: the rank; null otherwise.2
before.statementstringor nullWhat the endorser said.—
before.source_urlstringor nullURLWhere it was published.https://sflaborcouncil.org/endorsements
before.published_onstringor nullYYYY-MM-DDWhen it was published.2026-09-18
afterobjector nullThe values after the change; null for deleted.—
after.choice_idintegerThe choice endorsed.20931
after.choice_labelstringor nullThat choice’s label as printed; null if the choice has since been removed from the ballot.Jane Doe
after.rankintegeror nullRanked choice: the rank; null otherwise.1
after.statementstringor nullWhat the endorser said.—
after.source_urlstringor nullURLWhere it was published.https://sflaborcouncil.org/endorsements
after.published_onstringor nullYYYY-MM-DDWhen it was published.2026-09-18

Download every dictionary as CSV or JSON.

Change data dictionary · BallotData API