votinginfoproject / vip-specification

The Voting Information Project XML specification.
http://vip-specification.readthedocs.io/en/release/
Other
75 stars 30 forks source link

VIP API specification #413

Open jswiesner opened 3 years ago

jswiesner commented 3 years ago

VIP presently publishes a data specification for modeling voting information in feeds. This specification provides a convenient, standardized format by which VIP publishers can ingest this data. By the term "VIP publisher" I mean an organization that consumes VIP data in the form of feeds and publishes the data for consumption by users. But at the moment each VIP publisher can publish/serve this data in any format they choose.

In addition to the VIP data specification, what if VIP also published an API specification? This specification would define the contracts by which the end user would interact with VIP data. For example, there would be an API specification that defines the input (i.e. user address) and the output for a user to look up their polling places. In practice, I think this could look something like the voter information methods of the Civic Information API, but instead of returning proprietary entities, the API would return VIP objects.

This would give VIP more control over how its data is served to users, and help ensure that this is done in a consistent and equitable way across multiple VIP publishers. It seems reasonable to me that VIP could also require each publisher to implement the VIP API specification for public consumption, and even impose an SLA for each publisher to apply updates to the API specification to ensure new changes are accessible to users within a reasonable amount of time.

I expect there will need to be some minor tweaks to VIP objects to support an API specification, so with a new version of the VIP spec on the horizon, this is a good time to consider this.

Has there been any prior discussion or exploration into an API specification? What do people think about a VIP API specification?

afsmythe commented 3 years ago

Somewhat relevant: https://github.com/votinginfoproject/vip-specification/issues/398