CivicAPI Documentation: Difference between revisions

From Computernewb Wiki
Jump to navigation Jump to search
(wip)
 
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
WIP documentation of ElectionsAPI. ElectionsAPI, as the name suggests, is an API which provides political data, both for US and international.
WIP documentation of CivicAPI. CivicAPI, as the name suggests, is an API which provides political data, both for US and international.


Requests are rate-limited to prevent abuse.
Requests are rate-limited to prevent abuse.


==election==
==upcomingraces==
The <code>election</code> endpoint will give you access to election information, both historic and current.
The <code>/api/v1/upcomingraces</code> endpoint will give data for upcoming races data. This data currently goes up until the end of 2025, incrementing each year.


*Example URL: <code>https://computernewb.com/civicapi/api/v1/upcomingraces</code>
===/v1/election/{country}/{election}/{year}===
*Example output:
This can be used to fetch information about a country-wide election. The <code>year</code> argument can be used to narrow down the results to a specific year. If one isn't specified, it will return all the elections found.
<pre>
{
"Austria": [
{
"election_name": "Styrian state elections",
"election_type": "Statewide",
"date": "2024-11-24T00:00:00",
"description": "State elections in the Austrian state of Styria will be held on November 24."
}
]
}
</pre>


===Parameters===
Valid <code>election</code> arguments are <code>presidential</code>, <code>parliament</code>, and <code>governor</code>
*<code>election_name</code> - Name of the election
*<code>election_type</code> - The type of election. Current valid types are: <code>Statewide</code>, <code>Local</code>, <code>General</code>, and <code>Referendum</code>.
*<code>date</code> - The date of the election.
*<code>description</code> - Contains a small description of the election.


====Parameters====
==race==
The <code>/api/v1/race/{country}/{state}/{type}/{year}</code> endpoint will return election data for a specified election. This is valid for both ongoing and historic elections.
*<code>election_name</code> - The name of the election
*<code>election_type</code> - The type of election. Currently, valid election types are <code>popular</code>, <code>parliament</code>, and <code>electoral</code>.
*<code>votes_needed</code> - Will list the number of votes needed in a parliamentary or electoral vote to win the election. This parameter does not exist if the election_type is <code>popular</code>.
*<code>round</code> - Specifies the current round of voting in the election.
*<code>is_snap_election</code> - Specifies if the election is a snap election.
*<code>is_ongoing</code> - Specifies if the election is currently ongoing.
*<code>has_map</code> - Specifies if the election supports a map. A map can be generated with <code>/v1/election/{country}/{election}/{year}/map</code> (more information below)
*<code>map</code> - Specifies the map file to use.
*<code>polls_open</code> - Specifies the date of the polls for the election opening.
*<code>polls_close</code> - Specifies the date of the polls for the election closing.
*<code>term_start</code> - Specifies when the winner's term will begin.
*<code>term_end</code> - Specifies when the winner's term will end.
*<code>sources</code> - Lists the sources which were used to gather the data.
*<code>candidates</code> - The list of candidates in the race.
**<code>name</code> - Candidate's name
**<code>incumbent</code> - Specifies whether the candidate is an incumbent.
**<code>write_in</code> - Specifies whether the candidate is a write-in candidate.
**<code>party</code> - Candidate's party
**<code>votes</code> - The number of votes the candidate received
**<code>percent</code> - The percentage of votes the candidate received
**<code>electoral_votes</code> - The number of electoral votes the candidate received. Only exists if the election_type is <code>electoral</code>.
**<code>states_carried</code> - The number of states the candidate received. Only exists if the election_type is <code>electoral</code>.
**<code>winner</code> - Specifies if the candidate has been declared the winner.
*<code>region_results</code> - Results of the states/regions/constituencies/counties/oblasts/etc.
**<code>region</code> - The region
***<code>candidates</code> - The list of candidates in the region.
****<code>name</code> - Candidate's name
****<code>party</code> - Candidate's party
****<code>votes</code> - The number of votes the candidate received
****<code>percent</code> - The percentage of votes the candidate received
**<code>electoral_votes</code> - Specifies the number of electoral votes of the region. Only exists if the election_type is <code>electoral</code>.
**<code>winner</code> - The winner of the region.
**<code>fill</code> - The region winner's hex color, for filling maps in with.


You can also fetch elections via ID - i.e. <code>/api/v1/race/{id}</code>
Example URL: <code>https://computernewb.com/election/api/v1/election/us/presidential/1789</code>


* Example URLs: <code>https://computernewb.com/civicapi/api/v1/race/us/pa/presidential/1789</code>
===/v1/election/{country}/{election}/{year}/map===
* <code>https://computernewb.com/civicapi/api/v1/race/19</code>
This endpoint can be used to generate a map. It returns a PNG of a filled out map. This endpoint will only work if <code>has_map</code> is <code>true</code>. Otherwise, it will throw a 404 error.


===Parameters===
Example URL: <code>https://computernewb.com/election/api/v1/election/us/presidential/1789/map</code>
*<code>race_id</code> - The race ID
*<code>country</code> - The name of the country the election is taking place in, in ISO 3166 format
*<code>state</code> - If applicable, the name of the state the election is taking place in, also in ISO 3166 format.
*<code>type</code> - The type of election. Valid election types are: <code>presidential</code>, <code>presidential_round2</code>, <code>governor</code>, <code>house</code>, <code>regent</code>, <code>parliament</code>, <code>senate</code>, <code>referendum</code>, <code>mayor</code>,<code>primary</code>, <code>prime_minister</code>, <code>papal</code>, <code>secretary_of_state</code>, <code>attorney_general</code>, <code>state_house</code>, <code>state_senate</code>, and <code>treasurer</code>.
*<code>year</code> - The year of the election.
*<code>data</code>
**<code>election_name</code>:
***<code>en_US</code> - The name of the election (in American English).
**<code>is_snap_election</code> - Specifies if the election is a snap election.
**<code>is_disputed</code> - If this election has been disputed by one or more governments or election officials, this will be <code>true</code>.
**<code>is_delayed</code> - Will be <code>true</code> if the election has been previously delayed.
**<code>has_map</code> - Specifies if the election has a map. If a map is available, you can add <code>?generateMap</code> to the end of the URL to download an SVG map, or generate a PNG with <code>?generateMapPNG</code>.
**<code>polls_open</code> - The time when the polls open.
**<code>polls_close</code> - The time when the polls close.
**<code>term_begins</code> - Specifies when the elected candidate's term should begin.
**<code>term_ends</code> - Specifies when the elected candidate's term should end.
**<code>election_type</code> - Specifies the election type.
**<code>election_scope</code> - Specifies the scope of the election.
**<code>eligible_voters</code> - How many voters were eligible to vote in this election.
**<code>percent_reporting</code> - Estimated percentage reporting.
**<code>turnout</code> - The turnout, calculated by the number of votes + <code>eligible_voters</code> turned out.
**<code>last_updated</code> - Specifies when the data was last updated.
**<code>round</code> - Specifies the round.
**<code>sources</code> - Lists the sources used to gather the data.
**<code>district_details</code>:
***<code>district_name</code> - The name of the district.
***<code>district_country</code> - The country of the district.
***<code>district_map</code> - The map the district will use if <code>?generateMap</code> or <code>?generateMapPNG</code> is specified.
**<code>candidates</code>:
***<code>name</code> - The name of the candidate
***<code>party</code> - The candidate's party
***<code>candidate_id</code> - The candidate's ID in the database
***<code>incumbent</code> - Specifies if the candidate was an incumbent
***<code>is_major</code> - Specifies if the candidate is a major candidate. By our definition, any candidate that received 7% or more of the vote is considered a "major" candidate.
***<code>dropped_out</code> - Specifies if the candidate dropped out of the election.
***<code>write_in_candidate</code> - Specifies if this is a write-in candidate.
***<code>winner</code> - Specifies if this candidate won the election.
***<code>candidate_color</code> - The candidate's color (used for maps).
***<code>votes</code> - The number of votes the candidate received.
***<code>percent</code> - The percentage of votes the candidate received.
***<code>electoral_votes</code> - The electoral votes the candidate received. Used in United States and Italian presidential elections, as well as certain historic elections in Argentina, Brazil, and United States governor elections.
***<code>states_carried</code> - The number of states the candidate has carried.
***<code>seats_won</code> - The number of seats the candidate has won.
***<code>delegates</code> - The number of delegates the candidate has been awarded.


==search==
===/v1/election/{country}/{election}/{year}/{region}===
The <code>/api/v1/search</code> endpoint allows you to search for elections.
This can be used to fetch information about a specific region's election results. The <code>year</code> argument can be used to narrow down the results to a specific year. If one isn't specified, it will return all the elections found.

Valid <code>election</code> arguments are <code>presidential</code> and <code>governor</code>

====Parameters====
*<code>election_name</code> - The name of the election
*<code>election_type</code> - The type of election. Currently, valid election types are <code>popular</code>, <code>parliament</code>, and <code>electoral</code>.
*<code>votes_needed</code> - Will list the number of votes needed in a parliamentary or electoral vote to win the election. This parameter does not exist if the election_type is <code>popular</code>.
*<code>round</code> - Specifies the current round of voting in the election.
*<code>is_snap_election</code> - Specifies if the election is a snap election.
*<code>is_ongoing</code> - Specifies if the election is currently ongoing.
*<code>has_map</code> - Specifies if the election supports a map. A map can be generated with <code>/v1/election/{country}/{election}/{year}/map</code> (more information below)
*<code>map</code> - Specifies the map file to use.
*<code>polls_open</code> - Specifies the date of the polls for the election opening.
*<code>polls_close</code> - Specifies the date of the polls for the election closing.
*<code>term_start</code> - Specifies when the winner's term will begin.
*<code>term_end</code> - Specifies when the winner's term will end.
*<code>sources</code> - Lists the sources which were used to gather the data.
*<code>candidates</code> - The list of candidates in the race.
**<code>name</code> - Candidate's name
**<code>incumbent</code> - Specifies whether the candidate is an incumbent.
**<code>write_in</code> - Specifies whether the candidate is a write-in candidate.
**<code>party</code> - Candidate's party
**<code>votes</code> - The number of votes the candidate received
**<code>percent</code> - The percentage of votes the candidate received
**<code>electoral_votes</code> - The number of electoral votes the candidate received. Only exists if the election_type is <code>electoral</code>.
**<code>states_carried</code> - The number of states the candidate received. Only exists if the election_type is <code>electoral</code>.
**<code>winner</code> - Specifies if the candidate has been declared the winner.
*<code>region_results</code> - Results of the counties/districts/parishes/boroughs/etc.
**<code>region</code> - The region
***<code>candidates</code> - The list of candidates in the region.
****<code>name</code> - Candidate's name
****<code>party</code> - Candidate's party
****<code>votes</code> - The number of votes the candidate received
****<code>percent</code> - The percentage of votes the candidate received
**<code>electoral_votes</code> - Specifies the number of electoral votes of the region. Only exists if the election_type is <code>electoral</code>.
**<code>winner</code> - The winner of the region.
**<code>fill</code> - The region winner's hex color, for filling maps in with.

Example URL: <code>https://computernewb.com/api/v1/election/us/governor/2022/mn</code>

===/v1/election/{country}/{election}/{year}/{region}/map===
This endpoint can be used to generate a map. It returns a PNG of a filled out map. This endpoint will only work if <code>has_map</code> is <code>true</code>. Otherwise, it will throw a 404 error.

Example URL: <code>https://computernewb.com/api/v1/election/us/governor/2022/mn/map</code>

===/v1/election/{country}/{election}/{year}/{region}/{district}===
This endpoint can be used to fetch results for a specific county/region/district/etc. This does not support the <code>map</code> argument yet.

(not implemented yet; no docs)

==poll==
The poll endpoint will give you the polls.

(not implemented yet; no docs)

Latest revision as of 18:32, 20 November 2024

WIP documentation of CivicAPI. CivicAPI, as the name suggests, is an API which provides political data, both for US and international.

Requests are rate-limited to prevent abuse.

upcomingraces

The /api/v1/upcomingraces endpoint will give data for upcoming races data. This data currently goes up until the end of 2025, incrementing each year.

{
  "Austria": [
    {
      "election_name": "Styrian state elections",
      "election_type": "Statewide",
      "date": "2024-11-24T00:00:00",
      "description": "State elections in the Austrian state of Styria will be held on November 24."
    }
  ]
}

Parameters

  • election_name - Name of the election
  • election_type - The type of election. Current valid types are: Statewide, Local, General, and Referendum.
  • date - The date of the election.
  • description - Contains a small description of the election.

race

The /api/v1/race/{country}/{state}/{type}/{year} endpoint will return election data for a specified election. This is valid for both ongoing and historic elections.

You can also fetch elections via ID - i.e. /api/v1/race/{id}

Parameters

  • race_id - The race ID
  • country - The name of the country the election is taking place in, in ISO 3166 format
  • state - If applicable, the name of the state the election is taking place in, also in ISO 3166 format.
  • type - The type of election. Valid election types are: presidential, presidential_round2, governor, house, regent, parliament, senate, referendum, mayor,primary, prime_minister, papal, secretary_of_state, attorney_general, state_house, state_senate, and treasurer.
  • year - The year of the election.
  • data
    • election_name:
      • en_US - The name of the election (in American English).
    • is_snap_election - Specifies if the election is a snap election.
    • is_disputed - If this election has been disputed by one or more governments or election officials, this will be true.
    • is_delayed - Will be true if the election has been previously delayed.
    • has_map - Specifies if the election has a map. If a map is available, you can add ?generateMap to the end of the URL to download an SVG map, or generate a PNG with ?generateMapPNG.
    • polls_open - The time when the polls open.
    • polls_close - The time when the polls close.
    • term_begins - Specifies when the elected candidate's term should begin.
    • term_ends - Specifies when the elected candidate's term should end.
    • election_type - Specifies the election type.
    • election_scope - Specifies the scope of the election.
    • eligible_voters - How many voters were eligible to vote in this election.
    • percent_reporting - Estimated percentage reporting.
    • turnout - The turnout, calculated by the number of votes + eligible_voters turned out.
    • last_updated - Specifies when the data was last updated.
    • round - Specifies the round.
    • sources - Lists the sources used to gather the data.
    • district_details:
      • district_name - The name of the district.
      • district_country - The country of the district.
      • district_map - The map the district will use if ?generateMap or ?generateMapPNG is specified.
    • candidates:
      • name - The name of the candidate
      • party - The candidate's party
      • candidate_id - The candidate's ID in the database
      • incumbent - Specifies if the candidate was an incumbent
      • is_major - Specifies if the candidate is a major candidate. By our definition, any candidate that received 7% or more of the vote is considered a "major" candidate.
      • dropped_out - Specifies if the candidate dropped out of the election.
      • write_in_candidate - Specifies if this is a write-in candidate.
      • winner - Specifies if this candidate won the election.
      • candidate_color - The candidate's color (used for maps).
      • votes - The number of votes the candidate received.
      • percent - The percentage of votes the candidate received.
      • electoral_votes - The electoral votes the candidate received. Used in United States and Italian presidential elections, as well as certain historic elections in Argentina, Brazil, and United States governor elections.
      • states_carried - The number of states the candidate has carried.
      • seats_won - The number of seats the candidate has won.
      • delegates - The number of delegates the candidate has been awarded.

search

The /api/v1/search endpoint allows you to search for elections.