public
Description:
Home | Edit | New

API

Intentions

  • Create a RESTful voting API
  • The election results should be fully open and transparent
  • However, the API will not return actual results until the voting is finished – the purpose being to prevent people from using current results to bias ongoing voting.
  • Client provides an identity string when a user votes
  • API trusts the client’s identity string
  • Client doesn’t have to worry about details of how to count a ballot. It only passes it along.

To create an election, you must specify

  • a voting system
  • candidates for the election
  • when the voting starts
  • when the voting ends
  • some sort of credentials so that only the creator of the election can modify the election settings
    Note: Once in progress, the creator of an election cannot shut it down. It must run its course.

A voting system specifies:

  • The form of the ballot
  • The tallying method

Ballot forms:

  • Binary ballot (start here)
  • Ranked ballot
  • Range ballot

Tallying methods:

  • Single winner
    • Plurality (start here)
  • Multiple-winner
    • Proportional representation

RESTful API

Elections

List the elections

GET /elections

Create an election

POST /elections

Returns:

  • owner token
  • polling place token

View an election

GET /elections/101

Modify an election

PUT /elections/101

Delete an election

DELETE /election/101

Candidates

List the candidates

GET /elections/101/candidates

Create a candidate

POST /elections/101/candidates

View a candidate

GET /elections/101/candidates

Modify a candidate

PUT /elections/101/candidates

Delete a candidate

DELETE /election/101/candidates

Votes

List the votes

GET /elections/101/votes

Create a vote

POST /elections/101/votes

View a vote

GET /elections/101/votes

Modify a vote

PUT /elections/101/votes

Delete a vote

DELETE /election/101/votes

Misc

Voting vs. rating systems

  • Voting systems are designed to transform a group’s preferences into a N winners, where N is fixed in advance. There are many voting systems because there is no one transformation that is “correct” for all situations according to all reasonable criteria (see Arrow’s Impossibility Theorem).
  • Rating system do not imply how many “winners” (i.e. 5 star ratings) will occur. They do not have to ensure that a predetermined number of rated items percolate to the top.

Future

  • Nick said that he social web could benefit from having API’s to provide rating services.
  • Last edited by djwonk, Fri Feb 06 09:58:30 -0800 2009
    Home | Edit | New
    Versions: