Skip to content

Data Schema

ElectionGuard expects data to be formatted in a particular way according to a set of JSON schemas. The expectation is to keep these schemas alongside the specification. The schemas will be defined here to indicate to developers what they should be expecting.

Keep in mind that not all serialized files should be public. The election record includes the list of all data formats that should be public. Sample data for the election is also available for developers. This will include both what is in the Election Record, but also some private data only available for testing.

Schema ![Version 1.91][shield-green-1.91]

Currently, JSON is used as the primary serialization format of the artifacts from an election. These are JSON schema files that can be used to verify the schema of the setup files like the manifest pre-election and the election record files post-election. This represents the full list of items that can be serialized / deserialized, but not all elections will use every file type.

Work in Progress

This is a work in progress. Feel free to contribute.


  • Manifest / Manifest - Election manifest
  • Context / CiphertextElectionContext - Context for encryption for specific election
  • Constants / ElectionConstants- Constants of election
  • Encryption Device / EncryptionDevice - Encryption device information



  • Ballot / PlaintextBallot - Plaintext ballot
  • [Compact Ballot][compact_ballot] / CompactBallot - Compact ballot
  • Encrypted Ballot / CiphertextBallot - Encrypted ballot
  • Spoiled Ballot / SpoiledBallot - Submitted spoiled ballot


  • Tally / PlaintextTally - Plaintext tally
  • Encrypted Tally / PublishedCiphertextTally - Encrypted tally