{"openapi":"3.1.0","info":{"title":"SuperCitizen open elections API","version":"1.0.0","description":"Nonpartisan, sourced facts on every candidate on the November 3, 2026 general-election ballot for U.S. Senate, U.S. House and governor, plus major bills of the 118th and 119th Congresses. Every fact carries source ids that resolve in the response’s `sources` map (URL, publisher, retrieval date). Individual members’ votes are not published at this time: vote fields are omitted from responses and the vote endpoints return empty lists.","contact":{"name":"SuperCitizen","url":"https://supercitizen.org/developers","email":"hello@supercitizen.org"},"license":{"name":"CC BY-SA 4.0 (SuperCitizen-written summaries); facts are public record","url":"https://creativecommons.org/licenses/by-sa/4.0/"}},"servers":[{"url":"https://supercitizen.org"}],"security":[{"bearer":[]}],"paths":{"/api/v1/races":{"get":{"summary":"List races","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter state code, e.g. CA","schema":{"type":"string"}},{"name":"office","in":"query","required":false,"description":"us-senate | us-house | governor","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1–500 (default 100)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Items to skip (default 0)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RaceSummary"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/races/{id}":{"get":{"summary":"Get a race with its candidates","parameters":[{"name":"id","in":"path","required":true,"description":"Race id, e.g. 2026-ca-us-house-12, 2026-tx-us-senate, 2026-oh-us-senate-special, 2026-ga-governor","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Race"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/candidates":{"get":{"summary":"List candidates","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter state code","schema":{"type":"string"}},{"name":"office","in":"query","required":false,"description":"us-senate | us-house | governor","schema":{"type":"string"}},{"name":"race","in":"query","required":false,"description":"Race id","schema":{"type":"string"}},{"name":"incumbency","in":"query","required":false,"description":"incumbent | challenger | open-seat","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1–500 (default 100)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Items to skip (default 0)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CandidateSummary"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/candidates/{id}":{"get":{"summary":"Get a candidate’s full record","parameters":[{"name":"id","in":"path","required":true,"description":"Candidate id: the person’s durable slug, e.g. jane-q-doe","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Candidate"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/candidates/{id}/votes":{"get":{"summary":"A candidate’s recorded votes (not published at this time)","description":"Individual members’ votes are not published at this time, so this returns an empty list.","parameters":[{"name":"id","in":"path","required":true,"description":"Candidate id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CandidateVote"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/bills":{"get":{"summary":"List tracked bills","parameters":[{"name":"kind","in":"query","required":false,"description":"voted | unvoted","schema":{"type":"string"}},{"name":"congress","in":"query","required":false,"description":"118 | 119","schema":{"type":"integer"}},{"name":"issue","in":"query","required":false,"description":"Issue id","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1–500 (default 100)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Items to skip (default 0)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BillSummary"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/bills/{id}":{"get":{"summary":"Get a bill: summary, status, roll call outcomes","parameters":[{"name":"id","in":"path","required":true,"description":"Bill id, e.g. hr1-119, s5-118, hjres7-118","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Bill"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/issues":{"get":{"summary":"List issues and their spectra","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/issues/{id}":{"get":{"summary":"Get an issue","parameters":[{"name":"id","in":"path","required":true,"description":"Issue id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Issue"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/positions":{"get":{"summary":"Candidates’ public statements, by issue","parameters":[{"name":"candidate","in":"query","required":false,"description":"Candidate id","schema":{"type":"string"}},{"name":"issue","in":"query","required":false,"description":"Issue id","schema":{"type":"string"}},{"name":"race","in":"query","required":false,"description":"Race id","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1–500 (default 100)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Items to skip (default 0)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Position"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/votes":{"get":{"summary":"Recorded votes of 2026 candidates (not published at this time)","description":"Requires `bill` or `candidate`. Individual members’ votes are not published at this time, so this returns an empty list.","parameters":[{"name":"bill","in":"query","required":false,"description":"Bill id","schema":{"type":"string"}},{"name":"candidate","in":"query","required":false,"description":"Candidate id","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1–500 (default 100)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Items to skip (default 0)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VoteRow"}},"page":{"$ref":"#/components/schemas/Page"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/me":{"get":{"summary":"Your account: name, email, access tier and remaining model quota","description":"Needs `account:read`: an API key with that scope, or a Connected app’s OAuth token for this API. Never cached.","security":[{"bearer":[]},{"oauth2":["account:read"]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Me"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid credentials; the WWW-Authenticate header points at the OAuth metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key or connection lacks the scope this endpoint needs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/me/donations":{"get":{"summary":"Your donations and year-end statements","description":"Needs `donations:read`. Lists your 50 most recent gifts. No payment-method details or mailing address. Never cached.","security":[{"bearer":[]},{"oauth2":["donations:read"]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/MyDonations"},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid credentials; the WWW-Authenticate header points at the OAuth metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key or connection lacks the scope this endpoint needs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/lookup":{"post":{"summary":"Races on the ballot at an address","description":"The address is forwarded to the U.S. Census Geocoder (2026 congressional maps) and is not stored or logged.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","examples":["1100 Congress Ave, Austin, TX 78701"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","properties":{"state":{"type":"string"},"district":{"type":"string"},"races":{"type":"array","items":{"$ref":"#/components/schemas/RaceSummary"}}}},"sources":{"$ref":"#/components/schemas/Sources"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Address not matched","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — see Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Your API key, sc_live_… — or send it as X-API-Key."},"oauth2":{"type":"oauth2","description":"For apps acting for a person (Connected apps). Clients identify themselves with a Client ID Metadata Document (an HTTPS client_id); PKCE (S256) is required. Request the token with resource=https://supercitizen.org/api/v1.","flows":{"authorizationCode":{"authorizationUrl":"https://supercitizen.org/api/auth/oauth2/authorize","tokenUrl":"https://supercitizen.org/api/auth/oauth2/token","refreshUrl":"https://supercitizen.org/api/auth/oauth2/token","scopes":{"account:read":"See your name, email, access tier and remaining model quota","donations:read":"See your donation history and whether a year-end statement was sent","offline_access":"Stay connected without asking you to sign in again each hour"}}}}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Page":{"type":"object","properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}}},"Meta":{"type":"object","properties":{"version":{"type":"string"},"election":{"type":"string"},"data":{"type":"string"},"attribution":{"type":"string"}}},"Source":{"type":"object","required":["id","url","title","publisher","retrieved","kind"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"publisher":{"type":"string"},"retrieved":{"type":"string","format":"date"},"kind":{"type":"string"}}},"Sources":{"type":"object","description":"Source id → Source, for every id referenced in `data`.","additionalProperties":{"$ref":"#/components/schemas/Source"}},"CitedSentence":{"type":"object","properties":{"text":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}}},"RaceSummary":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string"},"office":{"enum":["us-senate","us-house","governor"]},"division":{"type":"string","description":"Open Civic Data division id, e.g. ocd-division/country:us/state:ca/cd:12"},"district":{"type":["string","null"]},"special":{"type":"boolean"},"title":{"type":"string"},"format":{"enum":["plurality","majority-runoff","top-two","ranked-choice","other"]},"hasIncumbent":{"type":"boolean"},"candidateIds":{"type":"array","items":{"type":"string"}},"url":{"type":"string"}}},"Race":{"allOf":[{"$ref":"#/components/schemas/RaceSummary"},{"type":"object","properties":{"formatNote":{"oneOf":[{"$ref":"#/components/schemas/CitedSentence"},{"type":"null"}]},"certified":{"type":"boolean"},"candidates":{"type":"array","items":{"$ref":"#/components/schemas/CandidateSummary"}},"sourceIds":{"type":"array","items":{"type":"string"}}}}]},"CandidateSummary":{"type":"object","properties":{"id":{"type":"string"},"raceId":{"type":"string"},"name":{"type":"string","description":"As printed on the ballot"},"partyLabels":{"type":"array","items":{"type":"string"},"description":"Exactly as printed on the ballot"},"incumbency":{"enum":["incumbent","challenger","open-seat"]},"fecCandidateId":{"type":["string","null"]},"bioguideId":{"type":["string","null"]},"url":{"type":"string"}}},"Candidate":{"allOf":[{"$ref":"#/components/schemas/CandidateSummary"},{"type":"object","properties":{"sourceIds":{"type":"array","items":{"type":"string"}},"links":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"url":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}}}},"background":{"type":"array","items":{"$ref":"#/components/schemas/CitedSentence"},"description":"AI-drafted from cited public sources"},"whyRunning":{"type":"array","items":{"$ref":"#/components/schemas/CitedSentence"},"description":"AI-drafted paraphrase of their stated reasons"},"positions":{"type":"array","items":{"$ref":"#/components/schemas/Position"}},"research":{"type":["object","null"],"description":"Set once every candidate in the race was researched the same way: { date, status: 'profiled' | 'nothing-found' }. nothing-found means we found no campaign website or public statements, not that the candidate has none."},"money":{"type":["object","null"],"description":"FEC financial summary for the 2025–26 cycle"},"outsideSpending":{"type":["object","null"],"description":"Independent expenditures for/against"},"disclosures":{"type":"array","items":{"type":"object"}},"neverVotedBills":{"type":"array","items":{"type":"object","properties":{"billId":{"type":"string"},"backed":{"type":"boolean"}}}},"origin":{"type":"object","description":"Which parts are public record and which are AI-drafted"}}}]},"Position":{"type":"object","properties":{"candidateId":{"type":"string"},"issue":{"type":"string"},"summary":{"type":"string"},"stance":{"type":["string","null"]},"sources":{"type":"array","items":{"type":"string"}},"origin":{"type":"string"}}},"BillSummary":{"type":"object","properties":{"id":{"type":"string"},"congress":{"type":"integer"},"label":{"type":"string"},"plainTitle":{"type":"string","description":"Our neutral plain-English description"},"shortTitle":{"type":["string","null"],"description":"The official short name"},"title":{"type":"string","description":"The official title"},"kind":{"enum":["voted","unvoted"]},"law":{"type":["string","null"]},"status":{"type":"string"},"issues":{"type":"array","items":{"type":"string"}},"congressGovUrl":{"type":"string"},"url":{"type":"string"}}},"Bill":{"allOf":[{"$ref":"#/components/schemas/BillSummary"},{"type":"object","properties":{"summary":{"type":"array","items":{"$ref":"#/components/schemas/CitedSentence"}},"rollcalls":{"type":"array","items":{"$ref":"#/components/schemas/Rollcall"}},"cosponsorCount":{"type":"integer"},"cosponsorsByParty":{"type":"object"},"selectionReasons":{"type":"array","items":{"type":"string"}}}}]},"Rollcall":{"type":"object","properties":{"id":{"type":"string"},"chamber":{"enum":["house","senate"]},"congress":{"type":"integer"},"session":{"type":"integer"},"roll":{"type":"integer"},"date":{"type":"string","format":"date"},"question":{"type":"string"},"result":{"type":"string"},"total":{"$ref":"#/components/schemas/Tally"},"officialUrl":{"type":"string"}}},"Tally":{"type":"object","properties":{"yea":{"type":"integer"},"nay":{"type":"integer"},"present":{"type":"integer"},"notVoting":{"type":"integer"}}},"CandidateVote":{"type":"object","properties":{"billId":{"type":"string"},"billLabel":{"type":"string"},"plainTitle":{"type":"string"},"vote":{"enum":["Y","N","P","NV"]},"rollcall":{"$ref":"#/components/schemas/Rollcall"}}},"VoteRow":{"type":"object","properties":{"candidateId":{"type":"string"},"billId":{"type":"string"},"rollcallId":{"type":"string"},"vote":{"enum":["Y","N","P","NV"]}}},"Quota":{"type":"object","properties":{"monthly":{"type":"integer"},"used":{"type":"integer"},"remaining":{"type":"integer"}}},"Me":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"memberSince":{"type":"string","format":"date"},"accessTier":{"enum":["free","supporter","hardship"]},"quota":{"type":"object","properties":{"open":{"$ref":"#/components/schemas/Quota"},"frontier":{"$ref":"#/components/schemas/Quota"},"resetsAt":{"type":"string","format":"date-time"}}}}},"MyDonations":{"type":"object","properties":{"gifts":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"amount":{"type":"number"},"currency":{"type":"string"},"recurring":{"type":"boolean"},"status":{"enum":["active","lapsed","canceled","completed","refunded"]},"supporterLevel":{"type":["string","null"],"description":"Set when the gift came through BetterCitizen’s page"}}}},"annualStatements":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer"},"sentOn":{"type":"string","format":"date"}}},"description":"Year-end giving statements we have emailed you"}}},"Issue":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"description":{"type":"string"},"whyItMatters":{"type":"string"},"spectrum":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}}}},"sources":{"type":"array","items":{"type":"string"},"description":"Ids, in the response's sources map, of the sources behind any facts in the description"}}}}}}