Welcome to the VIP Specification documentation¶
Welcome to the Voting Information Project’s (VIP) open XML and CSV format specification. This data format provides an easy way to produce data that lets developers take a voter’s address, compare it to street segments, and determine that voter’s precinct (or precinct split). Knowing a voter’s precinct allows information disseminators to provide voters with their official polling locations (and early voting sites), ballots (including both candidates and referenda), local election administrations, and election officials.
To see a changelog of all of the updates, please see the GitHub repository.
Publishers of VIP data¶
The following projects publish VIP data for end user consumption.
XML Documentation¶
XML Specification¶
Getting Started¶
The actual election information specifies collections of elements, some containing links between each other. The entire set of tags must be encapsulated in a root object named VipObject. See the sample xml file and xsd file for more details.
Each top-level tag is a container for other fields, described in their own section. The only required top-level tags are the source object and the election object, each of which must be present exactly once. All other top-level tags can be repeated an unlimited number of times, or not included at all; order of top-level tags does not matter. Each top-level tag is required to have a single attribute, “id”, which is required to be unique in a data file. The id attribute for the state object should be the state’s FIPS number and this is strongly recommended. The id attributes are not required to remain constant for the same piece of semantic data across multiple productions of the feed (e.g. candidate Michael Smith, running for dogcatcher in Iowa, is not required to have the same candidate id attribute each time the state of Iowa publishes data).
In general, subtag data can appear a maximum of one time within each top-level tag object and in any order. Exceptions are noted below.
For the data itself, the special characters &, <, and > need to be encoded as &, <, and >, respectively.
Elements & Enumerations¶
Single-page Format¶
XML Elements & Enumerations (Single Page)¶
- Elements
- BallotMeasureContest
- BallotMeasureSelection
- BallotSelectionBase
- BallotStyle
- Candidate
- CandidateContest
- CandidateSelection
- Checksum
- ContactInformation
- ContestBase
- Department
- Election
- ElectionAdministration
- ElectionNotice
- ElectoralDistrict
- ExternalFile
- ExternalGeospatialFeature
- ExternalIdentifier
- ExternalIdentifiers
- FeatureIdentifier
- Hours
- HoursOpen
- TimeWithZone
- HtmlColorString
- InternationalizedText
- LanguageString
- LatLng
- Locality
- Office
- OrderedContest
- Party
- PartyContest
- PartySelection
- Person
- PollingLocation
- Precinct
- RetentionContest
- Schedule
- SimpleAddressType
- Source
- SpatialBoundary
- State
- StreetSegment
- Term
- TimeWithZone
- VoterService
- Enumerations
Elements¶
BallotMeasureContest¶
The BallotMeasureContest provides information about a ballot measure before the voters, including summary statements on each side. Extends single-xml-contest-base.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ConStatement | InternationalizedText | Optional | Single | Specifies a statement in opposition to the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
EffectOfAbstain | InternationalizedText | Optional | Single | Specifies what effect abstaining (i.e. not voting) on this proposition will have (i.e. whether abstaining is considered a vote against it). | If the element is invalid or not present, then the implementation is required to ignore it. |
FullText | InternationalizedText | Optional | Single | Specifies the full text of the referendum as it appears on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
InfoUri | xs:anyURI |
Optional | Single | Specifies a URI that links to additional information about the referendum. | If the field is invalid or not present, then the implementation is required to ignore it. |
PassageThreshold | InternationalizedText | Optional | Single | Specifies the threshold of votes that the referendum needs in order to pass. The default is a simple majority (i.e. 50% plus one vote). Other common thresholds are “three-fifths” and “two-thirds”. If there are competing initiatives, information about their effect on the passage of the BallotMeasureContest would go here. | If the element is invalid or not present, then the implementation is required to ignore it. |
ProStatement | InternationalizedText | Optional | Single | Specifies a statement in favor of the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
SummaryText | InternationalizedText | Optional | Single | Specifies a short summary of the referendum that is on the ballot, below the title, but above the text. | If the element is invalid or not present, then the implementation is required to ignore it. |
Type | BallotMeasureType | Optional | Single | Specifies the particular type of ballot measure. Must be one of the valid BallotMeasureType options. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | Allows for cataloging a new BallotMeasureType option, when Type is specified as “other.” | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <BallotMeasureContest id="bmc30001">
<BallotSelectionIds>bms30001a bms30001b</BallotSelectionIds>
<BallotTitle>
<Text language="en">State of the State</Text>
<Text language="es">Estado del Estado.</Text>
</BallotTitle>
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<Name>Referendum on Virginia</Name>
<ConStatement label="bmc30001con">
<Text language="en">This is no good.</Text>
<Text language="es">Esto no es bueno.</Text>
</ConStatement>
<EffectOfAbstain label="bmc30001abs">
<Text language="en">Nothing will happen.</Text>
<Text language="es">Nada pasará.</Text>
</EffectOfAbstain>
<ProStatement label="bmc30001pro">
<Text language="en">Everything will be great.</Text>
<Text language="es">Todo va a estar bien.</Text>
</ProStatement>
<Type>referendum</Type>
</BallotMeasureContest>
|
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-xml-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
BallotMeasureSelection¶
Represents the possible selection (e.g. yes/no, recall/do not recall, et al) for a BallotMeasureContest that would appear on the ballot. BallotMeasureSelection extends single-xml-ballot-selection-base.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Selection | InternationalizedText | Required | Single | Selection text for a BallotMeasureContest | If the element is invalid or not present, the implementation is required to ignore the BallotMeasureSelection containing it. |
1 2 3 4 5 6 7 8 9 10 11 12 | <BallotMeasureSelection id="bms30001a">
<Selection label="bms30001at">
<Text language="en">Yes</Text>
<Text language="es">Sí</Text>
</Selection>
</BallotMeasureSelection>
<BallotMeasureSelection id="bms30001b">
<Selection label="bms30001bt">
<Text language="en">No</Text>
<Text language="es">No</Text>
</Selection>
</BallotMeasureSelection>
|
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotStyle¶
A container for the contests/measures on the ballot.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ImageUri | xs:anyURI |
Optional | Single | Specifies a URI that returns an image of the sample ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
OrderedContestIds | xs:IDREFS |
Optional | Single | Reference to a set of OrderedContest | If the field is invalid or not present, then the implementation is required to ignore it. |
PartyIds | xs:IDREFS |
Optional | Single | Reference to a set of :ref:`single-xml-party`s. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | <BallotStyle id="bs00000">
<OrderedContestIds>oc20003 oc20004 oc20005 oc20025 oc20355 oc20449</OrderedContestIds>
</BallotStyle>
|
Candidate¶
The Candidate object represents a candidate in a contest. If a candidate is running in multiple contests, each contest must have its own Candidate object. Candidate objects may not be reused between Contests.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
BallotName | InternationalizedText | Required | Single | The candidate’s name as it will be displayed on the official ballot (e.g. “Ken T. Cuccinelli II”). | If the element is invalid, then the
implementation is required to ignore the
Candidate element containing it. |
ContactInformation | single-xml-contact-information | Optional | Single | Contact and physical address information for this Candidate and/or their campaign (see single-xml-contact-information). | If the element is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Another identifier for a candidate that links to another source of information (e.g. a campaign committee ID that links to a campaign finance system). | If the element is invalid or not present, then the implementation is required to ignore it. |
FileDate | xs:date |
Optional | Single | Date when the candidate filed for the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsIncumbent | xs:boolean |
Optional | Single | Indicates whether the candidate is the incumbent for the office associated with the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsTopTicket | xs:boolean |
Optional | Single | Indicates whether the candidate is the top of a ticket that includes multiple candidates. | If the field is invalid or not present, then the implementation is required to ignore it. |
PartyId | xs:IDREF |
Optional | Single | Reference to a Party element with additional information about the candidate’s affiliated party. This is the party affiliation that is intended to be presented as part of ballot information. | If the field is invalid or not present, then the implementation is required to ignore it. |
PersonId | xs:IDREF |
Optional | Single | Reference to a Person element with additional information about the candidate. | If the field is invalid or not present, then the implementation is required to ignore it. |
PostElectionStatus | CandidatePostElectionStatus | Optional | Single | Final status of the candidate (e.g. winner, withdrawn, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
PreElectionStatus | CandidatePreElectionStatus | Optional | Single | Registration status of the candidate (e.g. filed, qualified, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 | <Candidate id="can10961">
<BallotName>
<Text language="en">Ken T. Cuccinelli II</Text>
</BallotName>
<PartyId>par0001</PartyId>
<PersonId>per10961</PersonId>
</Candidate>
|
CandidateContest¶
CandidateContest extends single-xml-contest-base and represents a contest among candidates.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
NumberElected | xs:integer |
Optional | Single | Number of candidates that are elected in the contest (i.e. “N” of N-of-M). | If the field is invalid or not present, then the implementation is required to ignore it. |
OfficeIds | xs:IDREFS |
Optional | Single | References a set of Office elements, if available, which give additional information about the offices. Note: the order of the office IDs must be in the same order as the candidates listed in BallotSelectionIds. E.g., if the various BallotSelectionIds reference CandidateSelection elements which reference the candidate for President first and Vice-President second, the OfficeIds should reference the office of President first and the office of Vice-President second. | If the field is invalid or not present, then the implementation is required to ignore it. |
PrimaryPartyIds | xs:IDREFS |
Optional | Single | References Party elements, if the contest is related to a particular party. | If the field is invalid or not present, then the implementation is required to ignore it. |
VotesAllowed | xs:integer |
Optional | Single | Maximum number of votes/write-ins per voter in this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <CandidateContest id="cc20003">
<BallotSelectionIds>cs10961 cs10962 cs10963</BallotSelectionIds>
<BallotTitle>
<Text language="en">Governor of Virginia</Text>
</BallotTitle>
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<Name>Governor</Name>
<NumberElected>1</NumberElected>
<OfficeId>off0000</OfficeId>
<VotesAllowed>1</VotesAllowed>
</CandidateContest>
|
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-xml-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
CandidateSelection¶
CandidateSelection extends single-xml-ballot-selection-base and represents a ballot selection for a candidate contest.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
CandidateIds | xs:IDREFS |
Optional | Single | References a set of Candidate elements. The number of candidates that can be references is unbounded in cases where the ballot selection is for a ticket (e.g. “President/Vice President”, “Governor/Lt Governor”). | If the field is invalid or not present, then the implementation is required to ignore it. |
EndorsementPartyIds | xs:IDREFS |
Optional | Single | References a set of Party elements, which signifies one or more endorsing parties for the candidate(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
IsWriteIn | xs:boolean |
Optional | Single | Signifies if the particular ballot selection allows for write-in candidates. If true, one or more write-in candidates are allowed for this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | <CandidateSelection id="cs10861">
<CandidateIds>can10861a can10861b</CandidateIds>
<EndorsementPartyIds>par0001</EndorsementPartyIds>
</CandidateSelection>
|
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
Checksum¶
The Checksum
object contains information about a cryptographic checksum, including
the raw checksum value and the cryptographic hash algorithm used to compute it.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Algorithm | ChecksumAlgorithm | Required | Single | The cryptographic hash algorithm used to compute the checksum value. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
Value | xs:string |
Required | Single | The raw cryptographic checksum value encoded as a non-delimited, lowercase hexadecimal string. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
1 2 3 4 | <Checksum>
<Algorithm>sha-256</Algorithm>
<Value>65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e</Value>
</Checksum>
|
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | single-xml-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-xml-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
Department¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Single | Contact and physical address information for the election administration body (see single-xml-contact-information). | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The individual to contact at the election administration office. The specified person should be the election official. | If the field is invalid or not present, then the implementation is required to ignore it. |
VoterService | single-xml-voter-service | Optional | Repeats | The types of services and appropriate contact individual available to voters. | If the element is invalid or not present, then the implementation is required to ignore it. |
VoterService¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | VoterServiceType | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | single-xml-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
Election¶
The Election object represents an Election Day, which usually consists of many individual contests and/or referenda. A feed must contain exactly one Election object. All relationships in the feed (e.g., street segment to precinct to polling location) are assumed to relate only to the Election specified by this object. It is permissible, and recommended, to combine unrelated contests (e.g., a special election and a general election) that occur on the same day into one feed with one Election object.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Date | xs:date |
Required | Single | Specifies when the election is being held. The Date is considered to be in the timezone local to the state holding the election. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
ElectionType | InternationalizedText | Optional | Single | Specifies the highest controlling authority for election (e.g., federal, state, county, city, town, etc.) | If the element is invalid or not present, then the implementation is required to ignore it. |
StateId | xs:IDREF |
Required | Single | Specifies a link to the State element where the election is being held. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
IsStatewide | xs:boolean |
Optional | Single | Indicates whether the election is statewide. | If the field is not present or invalid, the implementation is required to default to “yes”. |
Name | InternationalizedText | Optional | Single | The name for the election (NB: while optional, this element is highly recommended). | If the element is invalid or not present, then the implementation is required to ignore it. |
RegistrationInfo | InternationalizedText | Optional | Single | Specifies information about registration for this election either as text or a URI. | If the element is invalid or not present, then the implementation is required to ignore it. |
AbsenteeBallotInfo | InternationalizedText | Optional | Single | Specifies information about requesting absentee ballots either as text or a URI | If the element is invalid or not present, then the implementation is required to ignore it. |
ResultsUri | xs:anyURI |
Optional | Single | Contains a URI where results for the election may be found | If the field is invalid or not present, then the implementation is required to ignore it. |
PollingHours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that Election Day polling locations are open. If polling hours differ in specific polling locations, alternative hours may be specified in the PollingLocation object (NB: this element is deprecated in favor of the more structured :ref:`single-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References the HoursOpen element, which lists the hours of operation for polling locations. | If the field is invalid or not present, then the implementation is required to ignore it. |
HasElectionDayRegistration | xs:boolean |
Optional | Single | Specifies if a voter can register on the same day of the election (i.e., the last day of the election). Valid items are “yes” and “no”. | If the field is invalid or not present, then the implementation is required to ignore it. |
RegistrationDeadline | xs:date |
Optional | Single | Specifies the last day to register for the election with the possible exception of Election Day registration. | If the field is invalid or not present, then the implementation is required to ignore it. |
AbsenteeRequestDeadline | xs:date |
Optional | Single | Specifies the last day to request an absentee ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <Election id="ele30000">
<AbsenteeRequestDeadline>2013-10-30</AbsenteeRequestDeadline>
<Date>2013-11-05</Date>
<ElectionType>
<Text language="en">General</Text>
<Text language="es">Generales</Text>
</ElectionType>
<HasElectionDayRegistration>false</HasElectionDayRegistration>
<HoursOpenId>hours0001</HoursOpenId>
<IsStatewide>true</IsStatewide>
<Name>
<Text language="en">2013 Statewide General</Text>
</Name>
<RegistrationDeadline>2013-10-15</RegistrationDeadline>
<ResultsUri>http://www.sbe.virginia.gov/ElectionResults.html</ResultsUri>
<StateId>st51</StateId>
</Election>
|
ElectionAdministration¶
The Election Administration represents an institution for serving a locality’s (or state’s) election functions.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AbsenteeUri | xs:anyURI |
Optional | Single | Specifies the web address for information on absentee voting. | If the field is invalid or not present, then the implementation is required to ignore it. |
AmIRegisteredUri | xs:anyURI |
Optional | Single | Specifies the web address for information on whether an individual is registered. | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotTrackingUri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a ballot cast by mail | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotProvisionalTrackingUri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a provisional ballot. To support EAC guidelines for “Processing Provisional Ballots” (https://www.eac.gov/research-and-data/provisional-voting/) | If the field is invalid or not present, then the implementation is required to ignore it. |
Department | single-xml-department | Required | Repeats | Describes the administrative body for a particular voter service. | There must be at least one valid Department in each ElectionAdministration element. If no valid Department objects are present, the implementation is required to ignore the ElectionAdministration object that contains it/them. |
ElectionNotice | single-xml-election-notice | Optional | Single | A place for election administrators to post last minute and emergency notifications pertaining to the election. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionsUri | xs:anyURI |
Optional | Single | Specifies web address the administration’s website. | If the field is invalid or not present, then the implementation is required to ignore it. |
RegistrationUri | xs:anyURI |
Optional | Single | Specifies web address for information on registering to vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
RulesUri | xs:anyURI |
Optional | Single | Specifies a URI for the election rules and laws (if any) for the jurisdiction of the administration. | If the field is invalid or not present, then the implementation is required to ignore it. |
WhatIsOnMyBallotUri | xs:anyURI |
Optional | Single | Specifies web address for information on what is on an individual’s ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
WhereDoIVoteUri | xs:anyURI |
Optional | Single | The Specifies web address for information on where an individual votes based on their address. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <ElectionAdministration id="ea40133">
<AbsenteeUri>http://www.sbe.virginia.gov/absenteevoting.html</AbsenteeUri>
<AmIRegisteredUri>https://www.vote.virginia.gov/</AmIRegisteredUri>
<BallotTrackingUri>https://www.vote.virginia.gov/</BallotTrackingUri>
<BallotProvisionalTrackingUri>https://www.vote.virginia.gov/</BallotProvisionalTrackingUri>
<Department>
<ContactInformation label="ci60000">
<AddressLine>Washington Building First Floor</AddressLine>
<AddressLine>1100 Bank Street</AddressLine>
<AddressLine>Richmond, VA 23219</AddressLine>
<Name>State Board of Elections</Name>
</ContactInformation>
</Department>
<ElectionNotice>
<NoticeText>
<Text language="en">This is an emergency notification for this election.</Text>
</NoticeText>
<NoticeURI>https://www.yadayada.gov</NoticeURI>
</ElectionNotice>
<ElectionsUri>http://www.sbe.virginia.gov/</ElectionsUri>
<RegistrationUri>https://www.vote.virginia.gov/</RegistrationUri>
<RulesUri>http://www.sbe.virginia.gov/</RulesUri>
<WhatIsOnMyBallotUri>https://www.vote.virginia.gov/</WhatIsOnMyBallotUri>
<WhereDoIVoteUri>https://www.vote.virginia.gov/</WhereDoIVoteUri>
</ElectionAdministration>
|
Department¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Single | Contact and physical address information for the election administration body (see single-xml-contact-information). | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The individual to contact at the election administration office. The specified person should be the election official. | If the field is invalid or not present, then the implementation is required to ignore it. |
VoterService | single-xml-voter-service | Optional | Repeats | The types of services and appropriate contact individual available to voters. | If the element is invalid or not present, then the implementation is required to ignore it. |
VoterService¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | VoterServiceType | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | single-xml-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
ElectionNotice¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
NoticeText | InternationalizedText | Required | Single | The last minute or emergency notification text should be placed here. | If the element is invalid, then the
implementation is required to ignore the
ElectionNotice element containing
it. |
NoticeUri | xs:anyURI |
Optional | Single | Optional URL for additional information related to the last minute or emergency notification. | If the field is invalid or not present, then the implementation is required to ignore it. |
VoterService¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | VoterServiceType | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
ElectionNotice¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
NoticeText | InternationalizedText | Required | Single | The last minute or emergency notification text should be placed here. | If the element is invalid, then the
implementation is required to ignore the
ElectionNotice element containing
it. |
NoticeUri | xs:anyURI |
Optional | Single | Optional URL for additional information related to the last minute or emergency notification. | If the field is invalid or not present, then the implementation is required to ignore it. |
ElectoralDistrict¶
The ElectoralDistrict
object represents the geographic area in which contests are held. Examples
of ElectoralDistrict
include: “the state of Maryland”, “Virginia’s 5th Congressional District”,
or “Union School District”. The geographic area that comprises a ElectoralDistrict
is defined by
which precincts link to the ElectoralDistrict
.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers that link to external datasets (e.g. OCD-IDs) | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Required | Single | Specifies the electoral area’s name. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
Number | xs:integer |
Optional | Single | Specifies the district number of the district (e.g. 34, in the case of the 34th State Senate District). If a number is not applicable, instead of leaving the field blank, leave this field out of the object; empty strings are not valid for xs:integer fields. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | DistrictType | Required | Single | Specifies the type of electoral area. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
OtherType | xs:string |
Optional | Single | Allows for cataloging a new
DistrictType option
when Type is specified as “other”. |
If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <ElectoralDistrict id="ed60129">
<ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:va</Value>
</ExternalIdentifier>
<ExternalIdentifier>
<Type>fips</Type>
<Value>51</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
<Name>Commonwealth of Virginia</Name>
<Type>state</Type>
</ElectoralDistrict>
|
ExternalFile¶
The ExternalFile
object holds a reference to a file external to the feed itself.
External files are packaged along with the VIP feed into a single, archived file.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
FileUri | xs:anyURI |
Required | Single | The URI of the external file. | If the field is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
Checksum | single-xml-checksum | Required | Single | The cryptographic checksum of the referenced external file. | If the element is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
1 2 3 4 5 6 7 | <ExternalFile id="ef1">
<FileUri>precinct_shapes.zip</FileUri>
<Checksum>
<Algorithm>sha-256</Algorithm>
<Value>65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e</Value>
</Checksum>
</State>
|
Checksum¶
The Checksum
object contains information about a cryptographic checksum, including
the raw checksum value and the cryptographic hash algorithm used to compute it.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Algorithm | ChecksumAlgorithm | Required | Single | The cryptographic hash algorithm used to compute the checksum value. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
Value | xs:string |
Required | Single | The raw cryptographic checksum value encoded as a non-delimited, lowercase hexadecimal string. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
1 2 3 4 | <Checksum>
<Algorithm>sha-256</Algorithm>
<Value>65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e</Value>
</Checksum>
|
ExternalGeospatialFeature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalFileId | xs:IDREF |
Required | Single | Links to the ExternalFile containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FileFormat | GeospatialFormat | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier | single-xml-feature-identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Type | IdentifierType | Required | Single | Specifies the type of identifier. Must be one of the valid types as defined by IdentifierType. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
OtherType | xs:string |
Optional | Single | Allows for cataloging an
ExternalIdentifier type that falls
outside the options listed in
IdentifierType.
Type should be set to “other” when
using this field. |
If the field is invalid or not present, then the implementation is required to ignore it. |
Value | xs:string |
Required | Single | Specifies the identifier. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:nc/county:durham</Value>
</ExternalIdentifier>
<ExternalIdentifier>
<Type>FIPS</Type>
<Value>37063</Value>
</ExternalIdentifier>
<ExternalIdentifier>
<Type>OTHER</Type>
<OtherType>GNIS</OtherType>
<Value>1008550</Value>
</ExternalIdentifier>
<external_identifer>
<Type>OTHER</Type>
<OtherType>census</OtherType>
<Value>99063</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
|
ExternalIdentifiers¶
The ExternalIdentifiers
element allows VIP data to connect with external datasets (e.g.
candidates with campaign finance datasets, electoral geographies with OCD-IDs that allow for
greater connectivity with additional datasets, etc…). Examples for ExternalIdentifiers
can be
found on the objects that support them:
- Candidate
- Any element that extends single-xml-contest-base
- ElectoralDistrict
- Locality
- Office
- Party
- Precinct
- State
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalIdentifier | ExternalIdentifier | Required | Repeats | Defines the identifier and the type of identifier it is (see ExternalIdentifier for complete information). | At least one valid ExternalIdentifier
must be present for
ExternalIdentifiers to be valid. If
no valid ExternalIdentifier is
present, the implementation is required
to ignore the ExternalIdentifiers
element. |
FeatureIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
StartTime | single-xml-time-with-zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
EndTime | single-xml-time-with-zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
TimeWithZone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
HoursOpen¶
A structured way of describing the days and hours that a place such as a Office or PollingLocation is open, or that an event such as an Election is happening. The range of days indicated by the StartDate and EndDate in each `Schedule`_ element should not overlap with peer `Schedule`_ elements. For example, it is invalid to specify a schedule from 10/01/2016 to 10/31/2016 and also specify a schedule from 10/10/2016 to 10/11/2016 within the same HoursOpen element.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Schedule | single-xml-schedule | Required | Repeats | Defines a block of days and hours that a place will be open. | At least one valid `Schedule`_ must be
present for HoursOpen to be valid.
If no valid `Schedule`_ is present, the
implementation is required to ignore the
HoursOpen element. |
Schedule¶
A sub-portion of the schedule. This describes a range of days, along with one or more set of open and close times for those days, as well as the options describing whether or not appointments are necessary or possible.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Hours | single-xml-hours | Optional | Repeats | Blocks of hours in the date range in which the place is open. | If the element is invalid or not present, then the implementation is required to ignore it. |
IsOnlyByAppointment | xs:boolean |
Optional | Single | If true, the place is only open during the specified time window with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsOrByAppointment | xs:boolean |
Optional | Single | If true, the place is open during the hours specified time window and may also be open with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsSubjectToChange | xs:boolean |
Optional | Single | If true, the place should be open during the specified time window, but may be subject to change. People should contact prior to arrival to confirm hours are still accurate. | If the field is invalid or not present, then the implementation is required to ignore it. |
StartDate | xs:date |
Optional | Single | The date at which this collection of start and end times and options begin. | If the field is invalid or not present, then the implementation is required to ignore it. |
EndDate | xs:date |
Optional | Single | The date at which this collection of start and end times and options end. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
StartTime | single-xml-time-with-zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
EndTime | single-xml-time-with-zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
TimeWithZone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
HtmlColorString¶
A restricted string pattern for a six-character hex code representing an HTML color string. The pattern is:
[0-9a-f]{6}
InternationalizedText¶
InternationalizedText
allows for support of multiple languages for a string.
InternationalizedText
has an optional attribute label
, which allows the feed to refer
back to the original label for the information (e.g. if the contact information came from a
CSV, label
may refer to a row ID). Examples of InternationalizedText
can be seen in:
* Any element that extends single-xml-contest-base
* Any element that extends single-xml-ballot-selection-base
* Candidate
* single-xml-contact-information
* Election
* ElectionAdministration
* Office
* Party
* Person
* PollingLocation
* Source
NOTE: Internationalized Text is not currently supported for CSV submissions. “
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Text | LanguageString | Required | Repeats | Contains the translations of a particular string of text. | At least one valid Text must be
present for InternationalizedText to
be valid. If no valid Text is
present, the implementation is required
to ignore the InternationalizedText
element. |
LanguageString¶
LanguageString
extends xs:string and can contain text from any language. LanguageString
has one required attribute, language
, that must contain the 2-character language code for the
type of language LanguageString
contains.
1 2 3 4 | <BallotTitle>
<Text language="en">Retention of Supreme Court Justice</Text>
<Text language="es">La retención de juez de la Corte Suprema</Text>
</BallotTitle>
|
LatLng¶
The latitude and longitude of a polling location in `WGS 84`_ format. Both latitude and longitude values are measured in decimal degrees.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Latitude | xs:double |
Required | Single | The latitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
Longitude | xs:double |
Required | Single | The longitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
Source | xs:string |
Optional | Single | The system used to perform the lookup from location name to lat/lng. For example, this could be the name of a geocoding service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Locality¶
The Locality object represents the jurisdiction below the State (e.g. county).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ElectionAdministrationId | xs:IDREF |
Optional | Single | Links to the locality’s ElectionAdministration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Another identifier for a locality that links to another dataset (e.g. OCD-ID) | If the element is invalid or not present, then the implementation is required to ignore it. |
IsMailOnly | xs:boolean |
Optional | Single | Determines if the locality runs mail-only elections. If this is true, then all precincts a part of the locality will also run mail-only elections. Drop boxes may be used in addition to this flag using a polling location record configured as a Drop Box. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
Name | xs:string |
Required | Single | Specifies the name of a locality. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
PollingLocationIds | xs:IDREFS |
Optional | Single | Specifies a link to a set of the locality’s :ref:`polling locations <single-xml-polling-location>`s. If early vote centers or ballot drop locations are locality-wide, they should be specified here. | If the field is invalid or not present, the implementation is required to ignore it. However, the implementation should still check to see if there are any polling locations associated with this locality’s state. |
StateId | xs:IDREF |
Required | Single | References the locality’s State. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
Type | DistrictType | Optional | Single | Defines the kind of locality (e.g. county, town, et al.), which is one of the various DistrictType enumerations. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | Allows for defining a type of locality that falls outside the options listed in DistrictType. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <Locality id="loc70001">
<ElectionAdministrationId>ea40001</ElectionAdministrationId>
<ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:va/county:albemarle</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
<IsMailOnly>true</IsMailOnly>
<Name>ALBEMARLE COUNTY</Name>
<StateId>st51</StateId>
<Type>county</Type>
</Locality>
|
Office¶
Office
represents the office associated with a contest or district (e.g. Alderman, Mayor,
School Board, et al).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Repeats | Links to the single-xml-contact-information element associated with the office. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | A brief description of the office and its purpose. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | Links to the ElectoralDistrict element associated with the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers that link this office to other related datasets (e.g. campaign finance systems, OCD IDs, et al.). | If the element is invalid or not present, then the implementation is required to ignore it. |
FilingDeadline | xs:date |
Optional | Single | Specifies the date and time when a candidate must have filed for the contest for the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsPartisan | xs:boolean |
Optional | Single | Indicates whether the office is partisan. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name | InternationalizedText | Required | Single | The name of the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
OfficeHolderPersonIds | xs:IDREFS |
Optional | Single | Links to the Person element(s) that hold additional information about the current office holder(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
Term | single-xml-term | Optional | Single | Defines the term the office can be held. | If the element is invalid or not present, then the implementation is required to ignore it. |
Term¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Type | OfficeTermType | Optional | Single | Specifies the type of office term (see OfficeTermType for valid values). | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
StartDate | xs:date |
Optional | Single | Specifies the start date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
EndDate | xs:date |
Optional | Single | Specifies the end date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <Office id="off0000">
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<FilingDeadline>2013-01-01</FilingDeadline>
<IsPartisan>false</IsPartisan>
<Name>
<Text language="en">Governor</Text>
</Name>
<Term>
<Type>full-term</Type>
</Term>
</Office>
|
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | single-xml-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
OrderedContest¶
OrderedContest
encapsulates links to the information that comprises a contest and potential
ballot selections. OrderedContest
elements can be collected within a
BallotStyle to accurate depict exactly what will show up on a particular
ballot in the proper order.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContestId | xs:IDREF |
Required | Single | Links to elements that extend single-xml-contest-base. | If the field is invalid or not present, the
implementation is required to ignore the
OrderedContest element containing it. |
OrderedBallotSelectionIds | xs:IDREFS |
Optional | Single | Links to elements that extend single-xml-ballot-selection-base. | If the field is invalid or not present, the
implementation is required to ignore it. If an
OrderedBallotSelectionIds element is not
present, the presumed order of the selection
will be the order of
single-xml-ballot-selection-base-extended
elements referenced by the underlying
single-xml-contest-base-extended
elements. |
1 2 3 4 | <OrderedContest id="oc20003abc">
<ContestId>cc20003</ContestId>
<OrderedBallotSelectionIds>cs10961 cs10962 cs10963</OrderedBallotSelectionIds>
</OrderedContest>
|
Party¶
This element describes a political party and the metadata associated with them. These can also include “dummy” parties to indicate a type of contest (e.g., a Voter Nominated CandidateContest can use the PrimaryPartyIds field and a dummy Party object to indicate that the contest is a “Top-Two” primary).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the party name. | If the field is invalid or not present, then the implementation is required to ignore it. |
Color | single-xml-html-color-string | Optional | Single | The preferred display color for the party, for use in maps and other displays. | If the element is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers that link this party to other related data sets (e.g. a campaign finance system, etc). | If the element is invalid or not present, then the implementation is required to ignore it. |
IsWriteIn | xs:boolean |
Optional | Single | Signals if this political party is one that is officially recognized by a local, state, or federal organization, or is a “write-in” in jurisdictions which allow candidates to free-form enter their political affiliation. If this field is not present then it is assumed to be false. | If the field is invalid or not present, then the implementation is required to ignore it. |
LeaderPersonIds | xs:IDREFS |
Optional | Single | A reference of Person elements which are leaders of the Party. | If the field is invalid or not present, then the implementation is required to ignore it. |
LogoUri | xs:anyURI |
Optional | Single | Web address of a logo to use in displays. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name | InternationalizedText | Optional | Single | The name of the party. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 | <Party id="par0001">
<Abbreviation>REP</Abbreviation>
<Color>e91d0e</Color>
<IsWriteIn>false</IsWriteIn>
<LeaderPersonIds>per01</LeaderPersonIds>
<Name>
<Text language="en">Republican</Text>
</Name>
</Party>
|
HtmlColorString¶
A restricted string pattern for a six-character hex code representing an HTML color string. The pattern is:
[0-9a-f]{6}
PartyContest¶
An extension of single-xml-contest-base which describes a contest in which the possible ballot selections are of type PartySelection. These could include contests in which straight-party selections are allowed, or party-list contests (although these are more common outside of the United States).
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-xml-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
PartySelection¶
This element extends single-xml-ballot-selection-base to support contests in which the selections can be groups of one or more parties.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
PartyIds | xs:IDREFS |
Required | Single | One or more Party IDs which collectively represent a ballot selection. | If one or more parties referenced are invalid or not present, the implementation is required to ignore the PartySelection containing it. |
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
Person¶
Person
defines information about a person. The person may be a candidate, election administrator,
or elected official. These elements reference Person
:
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Repeats | Refers to the associated single-xml-contact-information. | If the element is invalid or not present, then the implementation is required to ignore it. |
DateOfBirth | xs:date |
Optional | Single | Represents the individual’s date of birth. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Identifiers for this person. | If the element is invalid or not present, then the implementation is required to ignore it. |
FirstName | xs:string |
Optional | Single | Represents an individual’s first name. | If the field is invalid or not present, then the implementation is required to ignore it. |
FullName | InternationalizedText | Optional | Single | Specifies a person’s full name (NB: this information is InternationalizedText because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
Gender | xs:string |
Optional | Single | Specifies a person’s gender. | If the field is invalid or not present, then the implementation is required to ignore it. |
LastName | xs:string |
Optional | Single | Represents an individual’s last name. | If the field is invalid or not present, then the implementation is required to ignore it. |
MiddleName | xs:string |
Optional | Repeats | Represents any number of names between an individual’s first and last names (e.g. John Ronald Reuel Tolkien). | If the field is invalid or not present, then the implementation is required to ignore it. |
Nickname | xs:string |
Optional | Single | Represents an individual’s nickname. | If the field is invalid or not present, then the implementation is required to ignore it. |
PartyId | xs:IDREF |
Optional | Single | Refers to the associated Party. This information is intended to be used by feed consumers to help them disambiguate the person’s identity, but not to be presented as part of any ballot information. For that see Candidate PartyId. | If the field is invalid or not present, then the implementation is required to ignore it. |
Prefix | xs:string |
Optional | Single | Specifies a prefix associated with a person (e.g. Dr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
Profession | InternationalizedText | Optional | Single | Specifies a person’s profession (NB: this information is InternationalizedText because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
Suffix | xs:string |
Optional | Single | Specifies a suffix associated with a person (e.g. Jr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
Title | InternationalizedText | Optional | Single | A title associated with a person (NB: this information is InternationalizedText because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <Person id="per50001">
<ContactInformation label="ci60002">
<Email>rwashburne@albemarle.org</Email>
<Phone>4349724173</Phone>
</ContactInformation>
<FirstName>RICHARD</FirstName>
<LastName>WASHBURNE</LastName>
<MiddleName>J.</MiddleName>
<Nickname>JAKE</Nickname>
<Title>
<Text language="en">General Registrar Physical</Text>
</Title>
</Person>
|
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | single-xml-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
PollingLocation¶
The PollingLocation object represents a site where voters cast or drop off ballots.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressStructured | single-xml-simple-address-type | Optional | Single | Represents the various structured parts of an address to a polling location. | One of AddressStructured and
AddressLine should be present for a
given Polling Location. If none is
present, the implementation is required
to ignore the PollingLocation
element containing it. |
AddressLine | xs:string |
Optional | Repeats | Represents the various parts of an address to a polling location. | One of AddressStructured and AddressLine
should be present for a given Polling
Location. If none is present, the
implementation is required to ignore the
PollingLocation element containing
it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating the polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the polling location is open (NB: this element is deprecated in favor of the more structured HoursOpen element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | Links to an HoursOpen element, which is a schedule of dates and hours during which the polling location is available. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsDropBox | xs:boolean |
Optional | Single | Indicates if this polling location is a drop box. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsEarlyVoting | xs:boolean |
Optional | Single | Indicates if this polling location is an early vote site. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | single-xml-lat-lng | Optional | Single | Specifies the latitude and longitude of this polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | Name of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
PhotoUri | xs:anyURI |
Optional | Single | Contains a link to an image of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <PollingLocation id="pl00000">
<AddressLine>2775 Hydraulic Rd Charlottesville, VA 22901</AddressLine>
<HoursOpenId>hours0002</HoursOpenId>
<IsDropBox>true</IsDropBox>
<IsEarlyVoting>true</IsEarlyVoting>
<LatLng>
<Latitude>38.009939</Latitude>
<Longitude>-78.506204</Longitude>
</LatLng>
<Name>ALBERMARLE HIGH SCHOOL</Name>
</PollingLocation>
<!-- Or: -->
<PollingLocation id="pl00000">
<AddressStructured>
<Line1>2775 Hydraulic Rd</Line1>
<City>CHARLOTTESVILLE</City>
<State>VA</State>
<Zip>22901</Zip>
</AddressStructured>
<HoursOpenId>hours0002</HoursOpenId>
<IsDropBox>true</IsDropBox>
<IsEarlyVoting>true</IsEarlyVoting>
<LatLng>
<Latitude>38.009939</Latitude>
<Longitude>-78.506204</Longitude>
</LatLng>
<Name>ALBERMARLE HIGH SCHOOL</Name>
</PollingLocation>
|
LatLng¶
The latitude and longitude of a polling location in `WGS 84`_ format. Both latitude and longitude values are measured in decimal degrees.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Latitude | xs:double |
Required | Single | The latitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
Longitude | xs:double |
Required | Single | The longitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
Source | xs:string |
Optional | Single | The system used to perform the lookup from location name to lat/lng. For example, this could be the name of a geocoding service. | If the field is invalid or not present, then the implementation is required to ignore it. |
SimpleAddressType¶
A SimpleAddressType
represents a structured address.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Line1 | xs:string |
Required | Single | The address line for a structured address. Should include the street number, street name, and any prefix and suffix. | If no Line1 is provided, the
implementation should ignore the
SimpleAddressType . |
Line2 | xs:string |
Optional | Single | Additional field for an address | If no Line2 is provided, the
implementation should ignore it. |
Line3 | xs:string |
Optional | Single | Additional field for an address | If no Line3 is provided, the
implementation should ignore it. |
City | xs:string |
Required | Single | The City value of a structured address. | If City is not provided, the
implementation should ignore the
SimpleAddressType . |
State | xs:string |
Required | Single | The State value of a structured address. | If State is not provided, the
implementation should ignore the
SimpleAddressType . |
Zip | xs:string |
Optional | Single | The ZIP code of a structured address. | If Zip is not provided, the
implementation should ignore the
SimpleAddressType . |
Precinct¶
The Precinct object represents a precinct, which is contained within a Locality. While the id attribute does not have to be static across feeds for one election, the combination of Source.VipId, Locality.Name, Precinct.Ward, Precinct.Name, and Precinct.Number should remain constant across feeds for one election (NB: not all of the fields just mentioned are required – omitting those non-required fields is fine).
Voters can be assigned to a precinct in two ways. A voter location modeled by StreetSegment is assigned to a precinct by StreetSegment.PrecinctId. Alternatively, a precinct’s spatial boundary can be modeled with Precinct.SpatialBoundary. Any registered voter address contained within the spatial boundary of the precinct is assigned to that precinct.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
BallotStyleId | xs:IDREF |
Optional | Single | Links to the BallotStyle, which a person who lives in this precinct will vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
ElectoralDistrictIds | xs:IDREFS |
Optional | Single | Links to the :ref:`single-xml-electoral-district`s (e.g., congressional district, state house district, school board district) to which the entire precinct/precinct split belongs. Highly Recommended if candidate information is to be provided. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifier for the precinct that relates to another dataset (e.g. OCD-ID). | If the element is invalid or not present, then the implementation is required to ignore it. |
IsMailOnly | xs:boolean |
Optional | Single | Determines if the precinct runs mail-only elections. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
LocalityId | xs:IDREF |
Required | Single | Links to the Locality that comprises the precinct. | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
Name | xs:string |
Required | Single | Specifies the precinct’s name (or number if no name exists). | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
Number | xs:string |
Optional | Single | Specifies the precinct’s number (e.g., 32 or 32A – alpha characters are legal). Should be used if the Name field is populated by a name and not a number. | If the field is invalid or not present, then the implementation is required to ignore it. |
PollingLocationIds | xs:IDREFS |
Optional | Single | Specifies a link to the precinct’s PollingLocation object(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
PrecinctSplitName | xs:string |
Optional | Single | If this field is empty, then this Precinct object represents a full precinct. If this field is present, then this Precinct object represents one portion of a split precinct. Each Precinct object that represents one portion of a split precinct must have the same Name value, but different PrecinctSplitName values. See the sample_feed.xml file for examples. | If the field is invalid or not present, then the implementation is required to ignore it. |
SpatialBoundary | single-xml-spatial-boundary | Optional | Single | Defines the spatial boundary of the precinct. All voter addresses contained within this boundary are assigned to the precinct. If a voter address also maps to a StreetSegment, then the precinct assignment from the StreetSegment will be preferred over the assignment from the spatial boundary. | If the element is invalid or not present, then the implementation is required to ignore it. |
Ward | xs:string |
Optional | Single | Specifies the ward the precinct is contained within. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <Precinct id="pre90111">
<BallotStyleId>bs00010</BallotStyleId>
<ElectoralDistrictIds>ed60129 ed60311 ed60054</ElectoralDistrictIds>
<IsMailOnly>false</IsMailOnly>
<LocalityId>loc70001</LocalityId>
<Name>203 - GEORGETOWN</Name>
<Number>0203</Number>
<PollingLocationIds>pl81274</PollingLocationIds>
<SpatialBoundary>
<ExternalGeospatialFeature>
<ExternalFileId>ef1</ExternalFileId>
<FileFormat>shp</FileFormat>
<FeatureIdentifier>
<Index>3</Index>
</FeatureIdentifier>
</ExternalGeospatialFeature>
</SpatialBoundary>
</Precinct>
<!--
Precinct split. Name and PollingLocationIds are the same but
PrecinctSplitName is present, the ElectoralDistrictIds are different,
and the BallotStyleId is different.
-->
<Precinct id="pre90348sp0000">
<BallotStyleId>bs00002</BallotStyleId>
<ElectoralDistrictIds>ed60129 ed60054 ed60150</ElectoralDistrictIds>
<IsMailOnly>false</IsMailOnly>
<LocalityId>loc70001</LocalityId>
<Name>201 - JACK JOUETT</Name>
<Number>0201</Number>
<PollingLocationIds>pl00000 pl81273 pl81662</PollingLocationIds>
<PrecinctSplitName>0000</PrecinctSplitName>
</Precinct>
<Precinct id="pre90348sp0001">
<BallotStyleId>bs00015</BallotStyleId>
<ElectoralDistrictIds>ed60129 ed60054 ed60267</ElectoralDistrictIds>
<IsMailOnly>false</IsMailOnly>
<LocalityId>loc70001</LocalityId>
<Name>201 - JACK JOUETT</Name>
<Number>0201</Number>
<PollingLocationIds>pl00000 pl81273 pl81662</PollingLocationIds>
<PrecinctSplitName>0001</PrecinctSplitName>
</Precinct>
|
SpatialBoundary¶
The SpatialBoundary
object defines a boundary in space. This boundary is usually defined by one or more discrete, closed polygonal shapes.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalGeospatialFeature | single-xml-external-geospatial-feature | Required | Single | The spatial boundary defined by a geospatial feature that is external to the VIP feed. | If the element is invalid, then the
implementation is required to ignore the
SpatialBoundary element containing
it. |
1 2 3 4 5 6 7 8 9 | <SpatialBoundary>
<ExternalGeospatialFeature>
<ExternalFileId>ef1</ExternalFileId>
<FileFormat>shp</FileFormat>
<FeatureIdentifier>
<Index>3</Index>
</FeatureIdentifier>
</ExternalGeospatialFeature>
</SpatialBoundary>
|
ExternalGeospatialFeature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalFileId | xs:IDREF |
Required | Single | Links to the ExternalFile containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FileFormat | GeospatialFormat | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier | single-xml-feature-identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
RetentionContest¶
RetentionContest
extends BallotMeasureContest and represents a
contest where a candidate is retained in a position (e.g. a judge).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
CandidateId | xs:IDREF |
Required | Single | Links to the Candidate being retained. | If the field is invalid or not present,
the implementation is required to ignore
the RetentionContest element
containing it. |
OfficeId | xs:IDREF |
Optional | Single | Links to the information about the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <RetentionContest id="rc40001">
<BallotSelectionIds>rc40001a rc40001b</BallotSelectionIds>
<BallotTitle>
<Text language="en">Retention of Supreme Court Justice</Text>
<Text language="es">La retención de juez de la Corte Suprema</Text>
</BallotTitle>
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<Name>Judicial Retention, Supreme Court</Name>
<CandidateId>can14444</CandidateId>
<OfficeId>off20006</OfficeId>
</RetentionContest>
|
Schedule¶
A sub-portion of the schedule. This describes a range of days, along with one or more set of open and close times for those days, as well as the options describing whether or not appointments are necessary or possible.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Hours | single-xml-hours | Optional | Repeats | Blocks of hours in the date range in which the place is open. | If the element is invalid or not present, then the implementation is required to ignore it. |
IsOnlyByAppointment | xs:boolean |
Optional | Single | If true, the place is only open during the specified time window with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsOrByAppointment | xs:boolean |
Optional | Single | If true, the place is open during the hours specified time window and may also be open with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsSubjectToChange | xs:boolean |
Optional | Single | If true, the place should be open during the specified time window, but may be subject to change. People should contact prior to arrival to confirm hours are still accurate. | If the field is invalid or not present, then the implementation is required to ignore it. |
StartDate | xs:date |
Optional | Single | The date at which this collection of start and end times and options begin. | If the field is invalid or not present, then the implementation is required to ignore it. |
EndDate | xs:date |
Optional | Single | The date at which this collection of start and end times and options end. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
StartTime | single-xml-time-with-zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
EndTime | single-xml-time-with-zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
TimeWithZone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
SimpleAddressType¶
A SimpleAddressType
represents a structured address.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Line1 | xs:string |
Required | Single | The address line for a structured address. Should include the street number, street name, and any prefix and suffix. | If no Line1 is provided, the
implementation should ignore the
SimpleAddressType . |
Line2 | xs:string |
Optional | Single | Additional field for an address | If no Line2 is provided, the
implementation should ignore it. |
Line3 | xs:string |
Optional | Single | Additional field for an address | If no Line3 is provided, the
implementation should ignore it. |
City | xs:string |
Required | Single | The City value of a structured address. | If City is not provided, the
implementation should ignore the
SimpleAddressType . |
State | xs:string |
Required | Single | The State value of a structured address. | If State is not provided, the
implementation should ignore the
SimpleAddressType . |
Zip | xs:string |
Optional | Single | The ZIP code of a structured address. | If Zip is not provided, the
implementation should ignore the
SimpleAddressType . |
Source¶
The Source object represents the organization that is publishing the information. This object is the only required object in the feed file, and only one source object is allowed to be present.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Name | xs:string |
Required | Single | Specifies the name of the organization that is providing the information. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
VipId | xs:string |
Required | Single | Specifies the ID of the organization. VIP uses FIPS codes for this ID. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
DateTime | xs:dateTime |
Required | Single | Specifies the date and time of the feed production. The date/time is considered to be in the timezone local to the organization. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
Description | InternationalizedText | Optional | Single | Specifies both the nature of the organization providing the data and what data is in the feed. | If the element is invalid or not present, then the implementation is required to ignore it. |
OrganizationUri | xs:string |
Optional | Single | Specifies a URI to the home page of the organization publishing the data. | If the field is invalid or not present, then the implementation is required to ignore it. |
FeedContactInformation | single-xml-contact-information | Optional | Single | Reference to the Person who will respond to inquiries about the information contained within the file. | If the element is invalid or not present, then the implementation is required to ignore it. |
TouUri | xs:anyURI |
Optional | Single | Specifies the website where the Terms of Use for the information in this file can be found. | If the field is invalid or not present, then the implementation is required to ignore it. |
Version | xs:string |
Required | Single | Specifies the version of the data | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
1 2 3 4 5 6 7 8 9 10 | <Source id="src1">
<DateTime>2013-10-24T14:25:28</DateTime>
<Description>
<Text language="en">SBE is the official source for Virginia data</Text>
</Description>
<Name>State Board of Elections, Commonwealth of Virginia</Name>
<OrganizationUri>http://www.sbe.virginia.gov/</OrganizationUri>
<VipId>51</VipId>
<Version>5.0</Version>
</Source>
|
SpatialBoundary¶
The SpatialBoundary
object defines a boundary in space. This boundary is usually defined by one or more discrete, closed polygonal shapes.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalGeospatialFeature | single-xml-external-geospatial-feature | Required | Single | The spatial boundary defined by a geospatial feature that is external to the VIP feed. | If the element is invalid, then the
implementation is required to ignore the
SpatialBoundary element containing
it. |
1 2 3 4 5 6 7 8 9 | <SpatialBoundary>
<ExternalGeospatialFeature>
<ExternalFileId>ef1</ExternalFileId>
<FileFormat>shp</FileFormat>
<FeatureIdentifier>
<Index>3</Index>
</FeatureIdentifier>
</ExternalGeospatialFeature>
</SpatialBoundary>
|
ExternalGeospatialFeature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalFileId | xs:IDREF |
Required | Single | Links to the ExternalFile containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FileFormat | GeospatialFormat | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier | single-xml-feature-identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
State¶
The State object includes state-wide election information. The ID attribute is recommended to be the state’s FIPS code, along with the prefix “st”.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ElectionAdministrationId | xs:IDREF |
Optional | Single | Links to the state’s election administration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifier for the state that relates to another dataset (e.g. OCD-ID). | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Required | Single | Specifiers the name of a state, such as Alabama. | If the field is invalid, then the
implementation is required to ignore the
State element containing it. |
PollingLocationIds | xs:IDREFS |
Optional | Single | Specifies a link to the state’s polling locations. If early vote centers or ballot drop locations are state-wide (e.g., anyone in the state can use them), they can be specified here, but you are encouraged to only use the Precinct element. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 | <State id="st51">
<ElectionAdministrationId>ea40133</ElectionAdministrationId>
<ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:va</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
<Name>Virginia</Name>
</State>
|
StreetSegment¶
A Street Segment objection represents a portion of a street and the links to the precinct that this geography (i.e., segment) is contained within. The start address house number must be less than the end address house number unless the segment consists of only one address, in which case these values are equal.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressDirection | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the entire address. An example is “NE” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
City | xs:string |
Required | Single | The city specifies the city or town of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
IncludesAllAddresses | xs:boolean |
Optional | Single | Specifies if the segment covers every address on this street. If this is true, then the values of StartHouseNumber and EndHouseNumber should be ignored. The value of OddEvenBoth must be both. | If the field is invalid or not present, then the implementation is required to ignore it. |
IncludesAllStreets | xs:boolean |
Optional | Single | Specifies if the segment covers every street in this city. If this is true, then the values of OddEvenBoth, StartHouseNumber, EndHouseNumber, StreetName, and Zip should be ignored. | If the field is invalid or not present, then the implementation is required to ignore it. |
OddEvenBoth | OebEnum | Optional | Single | Specifies whether the odd side of the street (in terms of house numbers), the even side, or both are in included in the street segment. | If the field is not present or invalid, the implementation is required to ignore the StreetSegment containing it. |
PrecinctId | xs:IDREF |
Required | Single | References the Precinct that contains the entire street segment. If a precinct has a single-xml-spatial-boundary which also contains the entire street segment, then the precinct assignment from the segment will be preferred over the assignment defined by the spatial boundary. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
StartHouseNumber | xs:integer |
Optional | Single | The house number at which the street segment starts. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, this value must be less than or equal to EndHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the StartHouseNumber is greater than the EndHouseNumber, the implementation should ignore the element containing them. |
EndHouseNumber | xs:integer |
Optional | Single | The house number at which the street segment ends. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, it must be greater than or equal to StartHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the EndHouseNumber is less than the StartHouseNumber, the implementation should ignore the element containing it. |
HouseNumberPrefix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., ‘B’ in ‘B22 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
HouseNumberSuffix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., 1/2 in ‘22 1/2 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
State | xs:string |
Required | Single | Specifies the two-letter state abbreviation of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
StreetDirection | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the street address (e.g., the “E” in “100 E Capitol St NE”). | If the field is invalid or not present, then the implementation is required to ignore it. |
StreetName | xs:string |
Optional | Single | Represents the name of the street for the address. A special wildcard, “*”, denotes every street in the given city/town. It optionally may contain street direction, street suffix or address direction (e.g., both “Capitol” and “E Capitol St NE” are acceptable for the address “100 E Capitol St NE”), however this is not preferred. Preferred is street name alone (e.g. “Capitol”). | If the field is invalid or not present, then the implementation is required to ignore it. |
StreetSuffix | xs:string |
Optional | Single | Represents the abbreviated, non-directional suffix to the street name. An example is “St” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
UnitNumber | xs:string |
Optional | Repeats | The apartment/unit number for a street segment. If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
Zip | xs:string |
Optional | Single | Specifies the zip code of the address. It may be 5 or 9 digits, and it may include a hyphen (‘-‘). It is required as it helps with geocoding, which is crucial for distributors. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <StreetSegment id="ss999999">
<City>Charlottesville</City>
<IncludesAllAddresses>true</IncludesAllAddresses>
<OddEvenBoth>both</OddEvenBoth>
<PrecinctId>pre99999</PrecinctId>
<State>VA</State>
<StreetName>CHAPEL HILL</StreetName>
<StreetSuffix>RD</StreetSuffix>
<Zip>22901</Zip>
</StreetSegment>
<StreetSegment id="ss309904">
<City>GREENWOOD</City>
<OddEvenBoth>both</OddEvenBoth>
<PrecinctId>pre92145</PrecinctId>
<StartHouseNumber>1</StartHouseNumber>
<EndHouseNumber>201</EndHouseNumber>
<State>VA</State>
<StreetName>MISTY MOUNTAIN</StreetName>
<StreetSuffix>RD</StreetSuffix>
<Zip>22943</Zip>
</StreetSegment>
<StreetSegment id = "ss1"
<City>GREENWOOD</City>
<OddEvenBoth>both</OddEvenBoth>
<PrecinctId>pre92145</PrecinctId>
<StartHouseNumber>1</StartHouseNumber>
<EndHouseNumber>1</EndHouseNumber>
<HouseNumberPrefix>B</HouseNumberPrefix>
<HouseNumberSuffix>1/2</HouseNumberSuffix>
<State>VA</State>
<StreetName>MISTY MOUNTAIN</StreetName>
<StreetSuffix>RD</StreetSuffix>
<Zip>22943</Zip>
</StreetSegment>
|
Term¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Type | OfficeTermType | Optional | Single | Specifies the type of office term (see OfficeTermType for valid values). | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
StartDate | xs:date |
Optional | Single | Specifies the start date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
EndDate | xs:date |
Optional | Single | Specifies the end date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <Office id="off0000">
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<FilingDeadline>2013-01-01</FilingDeadline>
<IsPartisan>false</IsPartisan>
<Name>
<Text language="en">Governor</Text>
</Name>
<Term>
<Type>full-term</Type>
</Term>
</Office>
|
TimeWithZone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
VoterService¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | single-xml-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | VoterServiceType | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Enumerations¶
BallotMeasureType¶
A list of the various types of ballot measures. States may have different legal definitions of each type; Wikipedia has more details about each type. These values are to help states with multiple types of non-candidate-based contests distinguish between each type; as such, the definitions in this table are simple guidelines. Ultimately it is up to the state or local election official to choose the value which best describes the ballot measure(s) in their jurisdiction.
Tag | Description |
---|---|
ballot-measure | A catch-all for generic types of non-candidate-based contests. |
initiative | These are usually citizen-driven measures to be placed on the ballot. These could include both statutory changes and constitutional amendments. |
referendum | These could include measures to repeal existing acts of legislation, legislative referrals, and legislatively-referred state constitutional amendments. |
other | Anything that does not fall into the above categories. |
CandidatePostElectionStatus¶
Tag | Description |
---|---|
advanced-to-runoff | For contests in which the top N candidates advance to the next round. |
projected-winner | A candidate is expected to win, but official results are not yet complete. |
winner | The candidate has officially won. |
withdrawn | The candidate has withdrawn from the contest. |
CandidatePreElectionStatus¶
Tag | Description |
---|---|
filed | The candidate has filed for office but not yet been qualified. |
qualified | The candidate has qualified for the contest. |
withdrawn | The candidate has withdrawn from the contest (but may still be on the ballot). |
write-in |
ChecksumAlgorithm¶
Tag | Description |
---|---|
sha-256 | 256-bit cryptographic hash algorithm of the SHA-2 family |
sha-512 | 512-bit cryptographic hash algorithm of the SHA-2 family |
DistrictType¶
Enumeration describing the set of possible jurisdiction and district types. Please use the enumeration value which most accurately reflects the type of district or jurisdiction in your state or county. For example, “town” and “township” may mean different things – or not be defined at all – in your state, so please use the definition which best matches your local meaning.
Tag | Description |
---|---|
borough | A borough |
city | A city. |
city-council | A specific seat/jurisdiction for a city, town, or village council. |
congressional | A United States congressional district. |
county | A county. |
county-council | A county council district, either in its entirety or for a specific seat. |
judicial | A judicial district. |
municipality | A civil division which is not a town, city, village, or county. |
national | The United States. |
school | A school district. |
special | A special-purpose district that exist separate from general-purpose districts. |
state | A state, district, commonwealth, or U.S. territory. |
state-house | The lower house of a state legislature. |
state-senate | The upper house of a state legislature. |
town | A town. |
township | A township, which may be different than a town. See the Wikipedia article. |
utility | A non-water public or municipal utility district. |
village | A village district. |
ward | A ward. |
water | A water district. |
other | Any district not described above. Use the OtherType field to describe it. |
GeospatialFormat¶
Geospatial file formats that are supported by the VIP specification.
Tag | Description |
---|---|
shp | ESRI Shapefile (reference) |
IdentifierType¶
Tag | Description |
---|---|
fips | Federal Information Processing Standards codes for states, counties, and cities. |
local-level | An identifier generated or used by local governments or organizations. |
national-level | An identifier generated or used by national organizations. |
ocd-id | An Open Civic Data Division Identifier. |
state-level | An identifier generated or used by state governments or organizations. |
other | Any identifier which doesn’t fall into any of the above categories. |
OebEnum¶
Tag | Description |
---|---|
both | Both even and odd addresses within the range. |
even | Only even-numbered addresses within the range. |
odd | Only odd-numbered addresses within the range. |
OfficeTermType¶
Tag | Description |
---|---|
full-term | This election is for an office for which the existing term has been completed. |
unexpired-term | This election is for an office for which the original term is not yet complete. |
VoteVariation¶
Note that the descriptions below describe what the enumeration names stand for in the context of the VIP spec, rather than provide general definitions of the election terms that the names correspond to. For example, even though there are majority voting methods that are not “1-of-m” (e.g. ranked choice voting), we constrain “majority” to 1-of-m. We do this to eliminate any source of ambiguity when a single enumeration value needs to be assigned to a contest.
Tag | Description |
---|---|
1-of-m | A method where each voter can select up to one option. |
approval | Approval voting, where each voter can select as many options as desired. |
borda | Borda count, where each voter can rank the options, and the rankings are assigned point values. |
cumulative | Cumulative voting, where each voter can distribute their vote to up to N options. |
majority | A 1-of-m method where the winner needs more than 50% of the vote to be elected. |
n-of-m | A method where each voter can select up to N options. |
plurality | A 1-of-m method where the option with the most votes is elected, regardless of whether the option has more than 50% of the vote. |
proportional | A proportional representation method (other than STV), which is any system that elects winners in proportion to the total vote. |
range | Range voting, where each voter can select a score for each option. |
rcv | Ranked choice voting (RCV), where each voter can rank the options, and the ballots are counted in rounds. Also known as instant-runoff voting (IRV) and the single transferable vote (STV). |
super-majority | A 1-of-m method where the winner needs more than some predetermined fraction of the vote to be elected, where the fraction is more than 50% (e.g. three-fifths or two-thirds). |
other | Used when the vote variation type is not included in this enumeration. |
VoterServiceType¶
Tag | Description |
---|---|
absentee-ballots | This department handles the dispatch, tracking, and return of absentee ballots. |
overseas-voting | The department for overseas, military, and other outside-the-U.S. voters. |
polling-places | This deparment handles the selection and management of polling places. |
voter-registration | The deparment that manages voter registration. |
other | Any other service not covered by the above descriptions. |
Elements (Separate Pages)¶
BallotMeasureContest¶
The BallotMeasureContest provides information about a ballot measure before the voters, including summary statements on each side. Extends ContestBase.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ConStatement | InternationalizedText | Optional | Single | Specifies a statement in opposition to the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
EffectOfAbstain | InternationalizedText | Optional | Single | Specifies what effect abstaining (i.e. not voting) on this proposition will have (i.e. whether abstaining is considered a vote against it). | If the element is invalid or not present, then the implementation is required to ignore it. |
FullText | InternationalizedText | Optional | Single | Specifies the full text of the referendum as it appears on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
InfoUri | xs:anyURI |
Optional | Single | Specifies a URI that links to additional information about the referendum. | If the field is invalid or not present, then the implementation is required to ignore it. |
PassageThreshold | InternationalizedText | Optional | Single | Specifies the threshold of votes that the referendum needs in order to pass. The default is a simple majority (i.e. 50% plus one vote). Other common thresholds are “three-fifths” and “two-thirds”. If there are competing initiatives, information about their effect on the passage of the BallotMeasureContest would go here. | If the element is invalid or not present, then the implementation is required to ignore it. |
ProStatement | InternationalizedText | Optional | Single | Specifies a statement in favor of the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
SummaryText | InternationalizedText | Optional | Single | Specifies a short summary of the referendum that is on the ballot, below the title, but above the text. | If the element is invalid or not present, then the implementation is required to ignore it. |
Type | BallotMeasureType | Optional | Single | Specifies the particular type of ballot measure. Must be one of the valid BallotMeasureType options. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | Allows for cataloging a new BallotMeasureType option, when Type is specified as “other.” | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <BallotMeasureContest id="bmc30001">
<BallotSelectionIds>bms30001a bms30001b</BallotSelectionIds>
<BallotTitle>
<Text language="en">State of the State</Text>
<Text language="es">Estado del Estado.</Text>
</BallotTitle>
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<Name>Referendum on Virginia</Name>
<ConStatement label="bmc30001con">
<Text language="en">This is no good.</Text>
<Text language="es">Esto no es bueno.</Text>
</ConStatement>
<EffectOfAbstain label="bmc30001abs">
<Text language="en">Nothing will happen.</Text>
<Text language="es">Nada pasará.</Text>
</EffectOfAbstain>
<ProStatement label="bmc30001pro">
<Text language="en">Everything will be great.</Text>
<Text language="es">Todo va a estar bien.</Text>
</ProStatement>
<Type>referendum</Type>
</BallotMeasureContest>
|
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends BallotSelectionBase. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
BallotMeasureSelection¶
Represents the possible selection (e.g. yes/no, recall/do not recall, et al) for a BallotMeasureContest that would appear on the ballot. BallotMeasureSelection extends BallotSelectionBase.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Selection | InternationalizedText | Required | Single | Selection text for a BallotMeasureContest | If the element is invalid or not present, the implementation is required to ignore the BallotMeasureSelection containing it. |
1 2 3 4 5 6 7 8 9 10 11 12 | <BallotMeasureSelection id="bms30001a">
<Selection label="bms30001at">
<Text language="en">Yes</Text>
<Text language="es">Sí</Text>
</Selection>
</BallotMeasureSelection>
<BallotMeasureSelection id="bms30001b">
<Selection label="bms30001bt">
<Text language="en">No</Text>
<Text language="es">No</Text>
</Selection>
</BallotMeasureSelection>
|
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotStyle¶
A container for the contests/measures on the ballot.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ImageUri | xs:anyURI |
Optional | Single | Specifies a URI that returns an image of the sample ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
OrderedContestIds | xs:IDREFS |
Optional | Single | Reference to a set of OrderedContest | If the field is invalid or not present, then the implementation is required to ignore it. |
PartyIds | xs:IDREFS |
Optional | Single | Reference to a set of :ref:`multi-xml-party`s. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | <BallotStyle id="bs00000">
<OrderedContestIds>oc20003 oc20004 oc20005 oc20025 oc20355 oc20449</OrderedContestIds>
</BallotStyle>
|
Candidate¶
The Candidate object represents a candidate in a contest. If a candidate is running in multiple contests, each contest must have its own Candidate object. Candidate objects may not be reused between Contests.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
BallotName | InternationalizedText | Required | Single | The candidate’s name as it will be displayed on the official ballot (e.g. “Ken T. Cuccinelli II”). | If the element is invalid, then the
implementation is required to ignore the
Candidate element containing it. |
ContactInformation | ContactInformation | Optional | Single | Contact and physical address information for this Candidate and/or their campaign (see ContactInformation). | If the element is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Another identifier for a candidate that links to another source of information (e.g. a campaign committee ID that links to a campaign finance system). | If the element is invalid or not present, then the implementation is required to ignore it. |
FileDate | xs:date |
Optional | Single | Date when the candidate filed for the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsIncumbent | xs:boolean |
Optional | Single | Indicates whether the candidate is the incumbent for the office associated with the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsTopTicket | xs:boolean |
Optional | Single | Indicates whether the candidate is the top of a ticket that includes multiple candidates. | If the field is invalid or not present, then the implementation is required to ignore it. |
PartyId | xs:IDREF |
Optional | Single | Reference to a Party element with additional information about the candidate’s affiliated party. This is the party affiliation that is intended to be presented as part of ballot information. | If the field is invalid or not present, then the implementation is required to ignore it. |
PersonId | xs:IDREF |
Optional | Single | Reference to a Person element with additional information about the candidate. | If the field is invalid or not present, then the implementation is required to ignore it. |
PostElectionStatus | CandidatePostElectionStatus | Optional | Single | Final status of the candidate (e.g. winner, withdrawn, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
PreElectionStatus | CandidatePreElectionStatus | Optional | Single | Registration status of the candidate (e.g. filed, qualified, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 | <Candidate id="can10961">
<BallotName>
<Text language="en">Ken T. Cuccinelli II</Text>
</BallotName>
<PartyId>par0001</PartyId>
<PersonId>per10961</PersonId>
</Candidate>
|
CandidateContest¶
CandidateContest extends ContestBase and represents a contest among candidates.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
NumberElected | xs:integer |
Optional | Single | Number of candidates that are elected in the contest (i.e. “N” of N-of-M). | If the field is invalid or not present, then the implementation is required to ignore it. |
OfficeIds | xs:IDREFS |
Optional | Single | References a set of Office elements, if available, which give additional information about the offices. Note: the order of the office IDs must be in the same order as the candidates listed in BallotSelectionIds. E.g., if the various BallotSelectionIds reference CandidateSelection elements which reference the candidate for President first and Vice-President second, the OfficeIds should reference the office of President first and the office of Vice-President second. | If the field is invalid or not present, then the implementation is required to ignore it. |
PrimaryPartyIds | xs:IDREFS |
Optional | Single | References Party elements, if the contest is related to a particular party. | If the field is invalid or not present, then the implementation is required to ignore it. |
VotesAllowed | xs:integer |
Optional | Single | Maximum number of votes/write-ins per voter in this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <CandidateContest id="cc20003">
<BallotSelectionIds>cs10961 cs10962 cs10963</BallotSelectionIds>
<BallotTitle>
<Text language="en">Governor of Virginia</Text>
</BallotTitle>
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<Name>Governor</Name>
<NumberElected>1</NumberElected>
<OfficeId>off0000</OfficeId>
<VotesAllowed>1</VotesAllowed>
</CandidateContest>
|
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends BallotSelectionBase. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
CandidateSelection¶
CandidateSelection extends BallotSelectionBase and represents a ballot selection for a candidate contest.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
CandidateIds | xs:IDREFS |
Optional | Single | References a set of Candidate elements. The number of candidates that can be references is unbounded in cases where the ballot selection is for a ticket (e.g. “President/Vice President”, “Governor/Lt Governor”). | If the field is invalid or not present, then the implementation is required to ignore it. |
EndorsementPartyIds | xs:IDREFS |
Optional | Single | References a set of Party elements, which signifies one or more endorsing parties for the candidate(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
IsWriteIn | xs:boolean |
Optional | Single | Signifies if the particular ballot selection allows for write-in candidates. If true, one or more write-in candidates are allowed for this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | <CandidateSelection id="cs10861">
<CandidateIds>can10861a can10861b</CandidateIds>
<EndorsementPartyIds>par0001</EndorsementPartyIds>
</CandidateSelection>
|
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
Election¶
The Election object represents an Election Day, which usually consists of many individual contests and/or referenda. A feed may not contain multiple Election objects. All relationships in the feed (e.g., street segment to precinct to polling location) are assumed to relate only to the Election specified by this object. It is permissible, and recommended, to combine unrelated contests (e.g., a special election and a general election) that occur on the same day into one feed with one Election object.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Date | xs:date |
Required | Single | Specifies when the election is being held. The Date is considered to be in the timezone local to the state holding the election. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
ElectionType | InternationalizedText | Optional | Single | Specifies the highest controlling authority for election (e.g., federal, state, county, city, town, etc.) | If the element is invalid or not present, then the implementation is required to ignore it. |
StateId | xs:IDREF |
Required | Single | Specifies a link to the State element where the election is being held. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
IsStatewide | xs:boolean |
Optional | Single | Indicates whether the election is statewide. | If the field is not present or invalid, the implementation is required to default to “yes”. |
Name | InternationalizedText | Optional | Single | The name for the election (NB: while optional, this element is highly recommended). | If the element is invalid or not present, then the implementation is required to ignore it. |
RegistrationInfo | InternationalizedText | Optional | Single | Specifies information about registration for this election either as text or a URI. | If the element is invalid or not present, then the implementation is required to ignore it. |
AbsenteeBallotInfo | InternationalizedText | Optional | Single | Specifies information about requesting absentee ballots either as text or a URI | If the element is invalid or not present, then the implementation is required to ignore it. |
ResultsUri | xs:anyURI |
Optional | Single | Contains a URI where results for the election may be found | If the field is invalid or not present, then the implementation is required to ignore it. |
PollingHours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that Election Day polling locations are open. If polling hours differ in specific polling locations, alternative hours may be specified in the PollingLocation object (NB: this element is deprecated in favor of the more structured :ref:`multi-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References the HoursOpen element, which lists the hours of operation for polling locations. | If the field is invalid or not present, then the implementation is required to ignore it. |
HasElectionDayRegistration | xs:boolean |
Optional | Single | Specifies if a voter can register on the same day of the election (i.e., the last day of the election). Valid items are “yes” and “no”. | If the field is invalid or not present, then the implementation is required to ignore it. |
RegistrationDeadline | xs:date |
Optional | Single | Specifies the last day to register for the election with the possible exception of Election Day registration. | If the field is invalid or not present, then the implementation is required to ignore it. |
AbsenteeRequestDeadline | xs:date |
Optional | Single | Specifies the last day to request an absentee ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <Election id="ele30000">
<AbsenteeRequestDeadline>2013-10-30</AbsenteeRequestDeadline>
<Date>2013-11-05</Date>
<ElectionType>
<Text language="en">General</Text>
<Text language="es">Generales</Text>
</ElectionType>
<HasElectionDayRegistration>false</HasElectionDayRegistration>
<HoursOpenId>hours0001</HoursOpenId>
<IsStatewide>true</IsStatewide>
<Name>
<Text language="en">2013 Statewide General</Text>
</Name>
<RegistrationDeadline>2013-10-15</RegistrationDeadline>
<ResultsUri>http://www.sbe.virginia.gov/ElectionResults.html</ResultsUri>
<StateId>st51</StateId>
</Election>
|
ElectionAdministration¶
The Election Administration represents an institution for serving a locality’s (or state’s) election functions.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AbsenteeUri | xs:anyURI |
Optional | Single | Specifies the web address for information on absentee voting. | If the field is invalid or not present, then the implementation is required to ignore it. |
AmIRegisteredUri | xs:anyURI |
Optional | Single | Specifies the web address for information on whether an individual is registered. | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotTrackingUri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a ballot cast by mail | If the field is invalid or not present, then the implementation is required to ignore it. |
BallotProvisionalTrackingUri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a provisional ballot. To support EAC guidelines for “Processing Provisional Ballots” (https://www.eac.gov/research-and-data/provisional-voting/) | If the field is invalid or not present, then the implementation is required to ignore it. |
Department | Department | Required | Repeats | Describes the administrative body for a particular voter service. | There must be at least one valid Department in each ElectionAdministration element. If no valid Department objects are present, the implementation is required to ignore the ElectionAdministration object that contains it/them. |
ElectionNotice | ElectionNotice | Optional | Single | A place for election administrators to post last minute and emergency notifications pertaining to the election. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionsUri | xs:anyURI |
Optional | Single | Specifies web address the administration’s website. | If the field is invalid or not present, then the implementation is required to ignore it. |
RegistrationUri | xs:anyURI |
Optional | Single | Specifies web address for information on registering to vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
RulesUri | xs:anyURI |
Optional | Single | Specifies a URI for the election rules and laws (if any) for the jurisdiction of the administration. | If the field is invalid or not present, then the implementation is required to ignore it. |
WhatIsOnMyBallotUri | xs:anyURI |
Optional | Single | Specifies web address for information on what is on an individual’s ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
WhereDoIVoteUri | xs:anyURI |
Optional | Single | The Specifies web address for information on where an individual votes based on their address. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <ElectionAdministration id="ea40133">
<AbsenteeUri>http://www.sbe.virginia.gov/absenteevoting.html</AbsenteeUri>
<AmIRegisteredUri>https://www.vote.virginia.gov/</AmIRegisteredUri>
<BallotTrackingUri>https://www.vote.virginia.gov/</BallotTrackingUri>
<BallotProvisionalTrackingUri>https://www.vote.virginia.gov/</BallotProvisionalTrackingUri>
<Department>
<ContactInformation label="ci60000">
<AddressLine>Washington Building First Floor</AddressLine>
<AddressLine>1100 Bank Street</AddressLine>
<AddressLine>Richmond, VA 23219</AddressLine>
<Name>State Board of Elections</Name>
</ContactInformation>
</Department>
<ElectionNotice>
<NoticeText>
<Text language="en">This is an emergency notification for this election.</Text>
</NoticeText>
<NoticeURI>https://www.yadayada.gov</NoticeURI>
</ElectionNotice>
<ElectionsUri>http://www.sbe.virginia.gov/</ElectionsUri>
<RegistrationUri>https://www.vote.virginia.gov/</RegistrationUri>
<RulesUri>http://www.sbe.virginia.gov/</RulesUri>
<WhatIsOnMyBallotUri>https://www.vote.virginia.gov/</WhatIsOnMyBallotUri>
<WhereDoIVoteUri>https://www.vote.virginia.gov/</WhereDoIVoteUri>
</ElectionAdministration>
|
Department¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | ContactInformation | Optional | Single | Contact and physical address information for the election administration body (see ContactInformation). | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The individual to contact at the election administration office. The specified person should be the election official. | If the field is invalid or not present, then the implementation is required to ignore it. |
VoterService | multi-xml-voter-service | Optional | Repeats | The types of services and appropriate contact individual available to voters. | If the element is invalid or not present, then the implementation is required to ignore it. |
VoterService¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | ContactInformation | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | VoterServiceType | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`multi-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | LatLng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
ElectionNotice¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
NoticeText | InternationalizedText | Required | Single | The last minute or emergency notification text should be placed here. | If the element is invalid, then the
implementation is required to ignore the
ElectionNotice element containing
it. |
NoticeUri | xs:anyURI |
Optional | Single | Optional URL for additional information related to the last minute or emergency notification. | If the field is invalid or not present, then the implementation is required to ignore it. |
VoterService¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | ContactInformation | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectionOfficialPersonId | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | VoterServiceType | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
ElectoralDistrict¶
The ElectoralDistrict
object represents the geographic area in which contests are held. Examples
of ElectoralDistrict
include: “the state of Maryland”, “Virginia’s 5th Congressional District”,
or “Union School District”. The geographic area that comprises a ElectoralDistrict
is defined by
which precincts link to the ElectoralDistrict
.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers that link to external datasets (e.g. OCD-IDs) | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Required | Single | Specifies the electoral area’s name. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
Number | xs:integer |
Optional | Single | Specifies the district number of the district (e.g. 34, in the case of the 34th State Senate District). If a number is not applicable, instead of leaving the field blank, leave this field out of the object; empty strings are not valid for xs:integer fields. | If the field is invalid or not present, then the implementation is required to ignore it. |
Type | DistrictType | Required | Single | Specifies the type of electoral area. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
OtherType | xs:string |
Optional | Single | Allows for cataloging a new
DistrictType option
when Type is specified as “other”. |
If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <ElectoralDistrict id="ed60129">
<ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:va</Value>
</ExternalIdentifier>
<ExternalIdentifier>
<Type>fips</Type>
<Value>51</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
<Name>Commonwealth of Virginia</Name>
<Type>state</Type>
</ElectoralDistrict>
|
ExternalFile¶
The ExternalFile
object holds a reference to a file external to the feed itself.
External files are packaged along with the VIP feed into a single, archived file.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
FileUri | xs:anyURI |
Required | Single | The URI of the external file. | If the field is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
Checksum | Checksum | Required | Single | The cryptographic checksum of the referenced external file. | If the element is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
1 2 3 4 5 6 7 | <ExternalFile id="ef1">
<FileUri>precinct_shapes.zip</FileUri>
<Checksum>
<Algorithm>sha-256</Algorithm>
<Value>65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e</Value>
</Checksum>
</State>
|
Checksum¶
The Checksum
object contains information about a cryptographic checksum, including
the raw checksum value and the cryptographic hash algorithm used to compute it.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Algorithm | ChecksumAlgorithm | Required | Single | The cryptographic hash algorithm used to compute the checksum value. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
Value | xs:string |
Required | Single | The raw cryptographic checksum value encoded as a non-delimited, lowercase hexadecimal string. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
1 2 3 4 | <Checksum>
<Algorithm>sha-256</Algorithm>
<Value>65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e</Value>
</Checksum>
|
ExternalIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Type | IdentifierType | Required | Single | Specifies the type of identifier. Must be one of the valid types as defined by IdentifierType. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
OtherType | xs:string |
Optional | Single | Allows for cataloging an
ExternalIdentifier type that falls
outside the options listed in
IdentifierType.
Type should be set to “other” when
using this field. |
If the field is invalid or not present, then the implementation is required to ignore it. |
Value | xs:string |
Required | Single | Specifies the identifier. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:nc/county:durham</Value>
</ExternalIdentifier>
<ExternalIdentifier>
<Type>FIPS</Type>
<Value>37063</Value>
</ExternalIdentifier>
<ExternalIdentifier>
<Type>OTHER</Type>
<OtherType>GNIS</OtherType>
<Value>1008550</Value>
</ExternalIdentifier>
<external_identifer>
<Type>OTHER</Type>
<OtherType>census</OtherType>
<Value>99063</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
|
ExternalIdentifiers¶
The ExternalIdentifiers
element allows VIP data to connect with external datasets (e.g.
candidates with campaign finance datasets, electoral geographies with OCD-IDs that allow for
greater connectivity with additional datasets, etc…). Examples for ExternalIdentifiers
can be
found on the objects that support them:
- Candidate
- Any element that extends ContestBase
- ElectoralDistrict
- Locality
- Office
- Party
- Precinct
- State
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalIdentifier | ExternalIdentifier | Required | Repeats | Defines the identifier and the type of identifier it is (see `ExternalIdentifier`_ for complete information). | At least one valid `ExternalIdentifier`_
must be present for
ExternalIdentifiers to be valid. If
no valid `ExternalIdentifier`_ is
present, the implementation is required
to ignore the ExternalIdentifiers
element. |
HoursOpen¶
A structured way of describing the days and hours that a place such as a Office or PollingLocation is open, or that an event such as an Election is happening. The range of days indicated by the StartDate and EndDate in each Schedule element should not overlap with peer Schedule elements. For example, it is invalid to specify a schedule from 10/01/2016 to 10/31/2016 and also specify a schedule from 10/10/2016 to 10/11/2016 within the same HoursOpen element.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Schedule | Schedule | Required | Repeats | Defines a block of days and hours that a place will be open. | At least one valid Schedule must be
present for HoursOpen to be valid.
If no valid Schedule is present, the
implementation is required to ignore the
HoursOpen element. |
Schedule¶
A sub-portion of the schedule. This describes a range of days, along with one or more set of open and close times for those days, as well as the options describing whether or not appointments are necessary or possible.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Hours | Hours | Optional | Repeats | Blocks of hours in the date range in which the place is open. | If the element is invalid or not present, then the implementation is required to ignore it. |
IsOnlyByAppointment | xs:boolean |
Optional | Single | If true, the place is only open during the specified time window with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsOrByAppointment | xs:boolean |
Optional | Single | If true, the place is open during the hours specified time window and may also be open with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsSubjectToChange | xs:boolean |
Optional | Single | If true, the place should be open during the specified time window, but may be subject to change. People should contact prior to arrival to confirm hours are still accurate. | If the field is invalid or not present, then the implementation is required to ignore it. |
StartDate | xs:date |
Optional | Single | The date at which this collection of start and end times and options begin. | If the field is invalid or not present, then the implementation is required to ignore it. |
EndDate | xs:date |
Optional | Single | The date at which this collection of start and end times and options end. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
StartTime | TimeWithZone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
EndTime | TimeWithZone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
TimeWithZone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
InternationalizedText¶
InternationalizedText
allows for support of multiple languages for a string.
InternationalizedText
has an optional attribute label
, which allows the feed to refer
back to the original label for the information (e.g. if the contact information came from a
CSV, label
may refer to a row ID). Examples of InternationalizedText
can be seen in:
* Any element that extends ContestBase
* Any element that extends BallotSelectionBase
* Candidate
* ContactInformation
* Election
* ElectionAdministration
* Office
* Party
* Person
* PollingLocation
* Source
NOTE: Internationalized Text is not currently supported for CSV submissions.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Text | LanguageString | Required | Repeats | Contains the translations of a particular string of text. | At least one valid Text must be
present for InternationalizedText to
be valid. If no valid Text is
present, the implementation is required
to ignore the InternationalizedText
element. |
LanguageString¶
LanguageString
extends xs:string and can contain text from any language. LanguageString
has one required attribute, language
, that must contain the 2-character language code for the
type of language LanguageString
contains.
1 2 3 4 | <BallotTitle>
<Text language="en">Retention of Supreme Court Justice</Text>
<Text language="es">La retención de juez de la Corte Suprema</Text>
</BallotTitle>
|
Locality¶
The Locality object represents the jurisdiction below the State (e.g. county).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ElectionAdministrationId | xs:IDREF |
Optional | Single | Links to the locality’s ElectionAdministration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Another identifier for a locality that links to another dataset (e.g. OCD-ID) | If the element is invalid or not present, then the implementation is required to ignore it. |
IsMailOnly | xs:boolean |
Optional | Single | Determines if the locality runs mail-only elections. If this is true, then all precincts a part of the locality will also run mail-only elections. Drop boxes may be used in addition to this flag using a polling location record configured as a Drop Box. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
Name | xs:string |
Required | Single | Specifies the name of a locality. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
PollingLocationIds | xs:IDREFS |
Optional | Single | Specifies a link to a set of the locality’s :ref:`polling locations <multi-xml-polling-location>`s. If early vote centers or ballot drop locations are locality-wide, they should be specified here. | If the field is invalid or not present, the implementation is required to ignore it. However, the implementation should still check to see if there are any polling locations associated with this locality’s state. |
StateId | xs:IDREF |
Required | Single | References the locality’s State. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
Type | DistrictType | Optional | Single | Defines the kind of locality (e.g. county, town, et al.), which is one of the various DistrictType enumerations. | If the field is invalid or not present, then the implementation is required to ignore it. |
OtherType | xs:string |
Optional | Single | Allows for defining a type of locality that falls outside the options listed in DistrictType. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <Locality id="loc70001">
<ElectionAdministrationId>ea40001</ElectionAdministrationId>
<ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:va/county:albemarle</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
<IsMailOnly>true</IsMailOnly>
<Name>ALBEMARLE COUNTY</Name>
<StateId>st51</StateId>
<Type>county</Type>
</Locality>
|
Office¶
Office
represents the office associated with a contest or district (e.g. Alderman, Mayor,
School Board, et al).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | ContactInformation | Optional | Repeats | Links to the ContactInformation element associated with the office. | If the element is invalid or not present, then the implementation is required to ignore it. |
Description | InternationalizedText | Optional | Single | A brief description of the office and its purpose. | If the element is invalid or not present, then the implementation is required to ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | Links to the ElectoralDistrict element associated with the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers that link this office to other related datasets (e.g. campaign finance systems, OCD IDs, et al.). | If the element is invalid or not present, then the implementation is required to ignore it. |
FilingDeadline | xs:date |
Optional | Single | Specifies the date and time when a candidate must have filed for the contest for the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsPartisan | xs:boolean |
Optional | Single | Indicates whether the office is partisan. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name | InternationalizedText | Required | Single | The name of the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
OfficeHolderPersonIds | xs:IDREFS |
Optional | Single | Links to the Person element(s) that hold additional information about the current office holder(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
Term | Term | Optional | Single | Defines the term the office can be held. | If the element is invalid or not present, then the implementation is required to ignore it. |
Term¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Type | OfficeTermType | Optional | Single | Specifies the type of office term (see OfficeTermType for valid values). | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
StartDate | xs:date |
Optional | Single | Specifies the start date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
EndDate | xs:date |
Optional | Single | Specifies the end date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <Office id="off0000">
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<FilingDeadline>2013-01-01</FilingDeadline>
<IsPartisan>false</IsPartisan>
<Name>
<Text language="en">Governor</Text>
</Name>
<Term>
<Type>full-term</Type>
</Term>
</Office>
|
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`multi-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | LatLng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
OrderedContest¶
OrderedContest
encapsulates links to the information that comprises a contest and potential
ballot selections. OrderedContest
elements can be collected within a
BallotStyle to accurate depict exactly what will show up on a particular
ballot in the proper order.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContestId | xs:IDREF |
Required | Single | Links to elements that extend ContestBase. | If the field is invalid or not present, the
implementation is required to ignore the
OrderedContest element containing it. |
OrderedBallotSelectionIds | xs:IDREFS |
Optional | Single | Links to elements that extend BallotSelectionBase. | If the field is invalid or not present, the
implementation is required to ignore it. If an
OrderedBallotSelectionIds element is not
present, the presumed order of the selection
will be the order of
BallotSelectionBase-extended
elements referenced by the underlying
ContestBase-extended
elements. |
1 2 3 4 | <OrderedContest id="oc20003abc">
<ContestId>cc20003</ContestId>
<OrderedBallotSelectionIds>cs10961 cs10962 cs10963</OrderedBallotSelectionIds>
</OrderedContest>
|
Party¶
This element describes a political party and the metadata associated with them. These can also include “dummy” parties to indicate a type of contest (e.g., a Voter Nominated CandidateContest can use the PrimaryPartyIds field and a dummy Party object to indicate that the contest is a “Top-Two” primary).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the party name. | If the field is invalid or not present, then the implementation is required to ignore it. |
Color | HtmlColorString | Optional | Single | The preferred display color for the party, for use in maps and other displays. | If the element is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers that link this party to other related data sets (e.g. a campaign finance system, etc). | If the element is invalid or not present, then the implementation is required to ignore it. |
IsWriteIn | xs:boolean |
Optional | Single | Signals if this political party is one that is officially recognized by a local, state, or federal organization, or is a “write-in” in jurisdictions which allow candidates to free-form enter their political affiliation. If this field is not present then it is assumed to be false. | If the field is invalid or not present, then the implementation is required to ignore it. |
LeaderPersonIds | xs:IDREFS |
Optional | Single | A reference of Person elements which are leaders of the Party. | If the field is invalid or not present, then the implementation is required to ignore it. |
LogoUri | xs:anyURI |
Optional | Single | Web address of a logo to use in displays. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name | InternationalizedText | Optional | Single | The name of the party. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 | <Party id="par0001">
<Abbreviation>REP</Abbreviation>
<Color>e91d0e</Color>
<IsWriteIn>false</IsWriteIn>
<LeaderPersonIds>per01</LeaderPersonIds>
<Name>
<Text language="en">Republican</Text>
</Name>
</Party>
|
HtmlColorString¶
A restricted string pattern for a six-character hex code representing an HTML color string. The pattern is:
[0-9a-f]{6}
PartyContest¶
An extension of ContestBase which describes a contest in which the possible ballot selections are of type PartySelection. These could include contests in which straight-party selections are allowed, or party-list contests (although these are more common outside of the United States).
ContestBase¶
A base model for all Contest types: BallotMeasureContest, CandidateContest, PartyContest, and RetentionContest (NB: the latter because it extends BallotMeasureContest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSelectionIds | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends BallotSelectionBase. | If the field is invalid or not present, then the implementation should ignore it. |
BallotSubTitle | InternationalizedText | Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
BallotTitle | InternationalizedText | Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ElectoralDistrictId | xs:IDREF |
Required | Single | References an ElectoralDistrict element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
ElectorateSpecification | InternationalizedText | Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
HasRotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
Name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
SequenceOrder | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a BallotStyle element. | If the field is invalid or not present, then the implementation should ignore it. |
VoteVariation | VoteVariation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
OtherVoteVariation | xs:string |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
PartySelection¶
This element extends BallotSelectionBase to support contests in which the selections can be groups of one or more parties.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
PartyIds | xs:IDREFS |
Required | Single | One or more Party IDs which collectively represent a ballot selection. | If one or more parties referenced are invalid or not present, the implementation is required to ignore the PartySelection containing it. |
BallotSelectionBase¶
A base model for all ballot selection types: BallotMeasureSelection, CandidateSelection, and PartySelection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
SequenceOrder | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in OrderedContest. | If the field is invalid or not present, then the implementation is required to ignore it. |
Person¶
Person
defines information about a person. The person may be a candidate, election administrator,
or elected official. These elements reference Person
:
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ContactInformation | ContactInformation | Optional | Repeats | Refers to the associated ContactInformation. | If the element is invalid or not present, then the implementation is required to ignore it. |
DateOfBirth | xs:date |
Optional | Single | Represents the individual’s date of birth. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Identifiers for this person. | If the element is invalid or not present, then the implementation is required to ignore it. |
FirstName | xs:string |
Optional | Single | Represents an individual’s first name. | If the field is invalid or not present, then the implementation is required to ignore it. |
FullName | InternationalizedText | Optional | Single | Specifies a person’s full name (NB: this information is InternationalizedText because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
Gender | xs:string |
Optional | Single | Specifies a person’s gender. | If the field is invalid or not present, then the implementation is required to ignore it. |
LastName | xs:string |
Optional | Single | Represents an individual’s last name. | If the field is invalid or not present, then the implementation is required to ignore it. |
MiddleName | xs:string |
Optional | Repeats | Represents any number of names between an individual’s first and last names (e.g. John Ronald Reuel Tolkien). | If the field is invalid or not present, then the implementation is required to ignore it. |
Nickname | xs:string |
Optional | Single | Represents an individual’s nickname. | If the field is invalid or not present, then the implementation is required to ignore it. |
PartyId | xs:IDREF |
Optional | Single | Refers to the associated Party. This information is intended to be used by feed consumers to help them disambiguate the person’s identity, but not to be presented as part of any ballot information. For that see Candidate PartyId. | If the field is invalid or not present, then the implementation is required to ignore it. |
Prefix | xs:string |
Optional | Single | Specifies a prefix associated with a person (e.g. Dr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
Profession | InternationalizedText | Optional | Single | Specifies a person’s profession (NB: this information is InternationalizedText because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
Suffix | xs:string |
Optional | Single | Specifies a suffix associated with a person (e.g. Jr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
Title | InternationalizedText | Optional | Single | A title associated with a person (NB: this information is InternationalizedText because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <Person id="per50001">
<ContactInformation label="ci60002">
<Email>rwashburne@albemarle.org</Email>
<Phone>4349724173</Phone>
</ContactInformation>
<FirstName>RICHARD</FirstName>
<LastName>WASHBURNE</LastName>
<MiddleName>J.</MiddleName>
<Nickname>JAKE</Nickname>
<Title>
<Text language="en">General Registrar Physical</Text>
</Title>
</Person>
|
ContactInformation¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
ElectionAdministration, Office,
Person, Source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressLine | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
Fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`multi-xml-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | References an HoursOpen element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | LatLng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
Phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
Uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
Name
and AddressLine
Usage Note¶
The Name
and AddressLine
fields should be chosen so that a display
or mailing address can be constructed programmatically by joining the
Name
and AddressLine
fields together. For example, for the
following address:
Department of Elections
1 Dr. Carlton B. Goodlett Place, Room 48
San Francisco, CA 94102
The name could be “Department of Elections” and the first address line could be “1 Dr. Carlton B. Goodlett Place, Room 48.”
However, VIP does not yet support the representation of mailing addresses whose “name” portion spans more than one line, for example:
California Secretary of State
Elections Division
1500 11th Street
Sacramento, CA 95814
For addresses like the above, we recommend choosing a name like, “California Secretary of State, Elections Division” with “1500 11th Street” as the first address line. This would result in a programmatically constructed address like the following:
California Secretary of State, Elections Division
1500 11th Street
Sacramento, CA 95814
1 2 3 4 5 6 7 8 | <ContactInformation label="ci10861a">
<AddressLine>1600 Pennsylvania Ave</AddressLine>
<AddressLine>Washington, DC 20006</AddressLine>
<Email>president@whitehouse.gov</Email>
<Phone>202-456-1111</Phone>
<Phone annotation="TDD">202-456-6213</Phone>
<Uri>http://www.whitehouse.gov</Uri>
</ContactInformation>
|
PollingLocation¶
The PollingLocation object represents a site where voters cast or drop off ballots.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressStructured | SimpleAddressType | Optional | Single | Represents the various structured parts of an address to a polling location. | One of AddressStructured and
AddressLine should be present for a
given Polling Location. If none is
present, the implementation is required
to ignore the PollingLocation
element containing it. |
AddressLine | xs:string |
Optional | Repeats | Represents the various parts of an address to a polling location. | One of AddressStructured and AddressLine
should be present for a given Polling
Location. If none is present, the
implementation is required to ignore the
PollingLocation element containing
it. |
Directions | InternationalizedText | Optional | Single | Specifies further instructions for locating the polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
Hours [deprecated] | InternationalizedText | Optional | Single | Contains the hours (in local time) that the polling location is open (NB: this element is deprecated in favor of the more structured HoursOpen element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
HoursOpenId | xs:IDREF |
Optional | Single | Links to an HoursOpen element, which is a schedule of dates and hours during which the polling location is available. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsDropBox | xs:boolean |
Optional | Single | Indicates if this polling location is a drop box. | If the field is invalid or not present, then the implementation is required to ignore it. |
IsEarlyVoting | xs:boolean |
Optional | Single | Indicates if this polling location is an early vote site. | If the field is invalid or not present, then the implementation is required to ignore it. |
LatLng | LatLng | Optional | Single | Specifies the latitude and longitude of this polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Optional | Single | Name of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
PhotoUri | xs:anyURI |
Optional | Single | Contains a link to an image of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <PollingLocation id="pl00000">
<AddressLine>2775 Hydraulic Rd Charlottesville, VA 22901</AddressLine>
<HoursOpenId>hours0002</HoursOpenId>
<IsDropBox>true</IsDropBox>
<IsEarlyVoting>true</IsEarlyVoting>
<LatLng>
<Latitude>38.009939</Latitude>
<Longitude>-78.506204</Longitude>
</LatLng>
<Name>ALBERMARLE HIGH SCHOOL</Name>
</PollingLocation>
<!-- Or: -->
<PollingLocation id="pl00000">
<AddressStructured>
<Line1>2775 Hydraulic Rd</Line1>
<City>CHARLOTTESVILLE</City>
<State>VA</State>
<Zip>22901</Zip>
</AddressStructured>
<HoursOpenId>hours0002</HoursOpenId>
<IsDropBox>true</IsDropBox>
<IsEarlyVoting>true</IsEarlyVoting>
<LatLng>
<Latitude>38.009939</Latitude>
<Longitude>-78.506204</Longitude>
</LatLng>
<Name>ALBERMARLE HIGH SCHOOL</Name>
</PollingLocation>
|
LatLng¶
The latitude and longitude of a polling location in `WGS 84`_ format. Both latitude and longitude values are measured in decimal degrees.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Latitude | xs:double |
Required | Single | The latitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
Longitude | xs:double |
Required | Single | The longitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
Source | xs:string |
Optional | Single | The system used to perform the lookup from location name to lat/lng. For example, this could be the name of a geocoding service. | If the field is invalid or not present, then the implementation is required to ignore it. |
SimpleAddressType¶
A SimpleAddressType
represents a structured address.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Line1 | xs:string |
Required | Single | The address line for a structured address. Should include the street number, street name, and any prefix and suffix. | If no Line1 is provided, the
implementation should ignore the
SimpleAddressType . |
Line2 | xs:string |
Optional | Single | Additional field for an address | If no Line2 is provided, the
implementation should ignore it. |
Line3 | xs:string |
Optional | Single | Additional field for an address | If no Line3 is provided, the
implementation should ignore it. |
City | xs:string |
Required | Single | The City value of a structured address. | If City is not provided, the
implementation should ignore the
SimpleAddressType . |
State | xs:string |
Required | Single | The State value of a structured address. | If State is not provided, the
implementation should ignore the
SimpleAddressType . |
Zip | xs:string |
Optional | Single | The ZIP code of a structured address. | If Zip is not provided, the
implementation should ignore the
SimpleAddressType . |
Precinct¶
The Precinct object represents a precinct, which is contained within a Locality. While the id attribute does not have to be static across feeds for one election, the combination of Source.VipId, Locality.Name, Precinct.Ward, Precinct.Name, and Precinct.Number should remain constant across feeds for one election (NB: not all of the fields just mentioned are required – omitting those non-required fields is fine).
Voters can be assigned to a precinct in two ways. A voter location modeled by StreetSegment is assigned to a precinct by StreetSegment.PrecinctId. Alternatively, a precinct’s spatial boundary can be modeled with Precinct.SpatialBoundary. Any registered voter address contained within the spatial boundary of the precinct is assigned to that precinct.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
BallotStyleId | xs:IDREF |
Optional | Single | Links to the BallotStyle, which a person who lives in this precinct will vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
ElectoralDistrictIds | xs:IDREFS |
Optional | Single | Links to the :ref:`multi-xml-electoral-district`s (e.g., congressional district, state house district, school board district) to which the entire precinct/precinct split belongs. Highly Recommended if candidate information is to be provided. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifier for the precinct that relates to another dataset (e.g. OCD-ID). | If the element is invalid or not present, then the implementation is required to ignore it. |
IsMailOnly | xs:boolean |
Optional | Single | Determines if the precinct runs mail-only elections. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
LocalityId | xs:IDREF |
Required | Single | Links to the Locality that comprises the precinct. | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
Name | xs:string |
Required | Single | Specifies the precinct’s name (or number if no name exists). | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
Number | xs:string |
Optional | Single | Specifies the precinct’s number (e.g., 32 or 32A – alpha characters are legal). Should be used if the Name field is populated by a name and not a number. | If the field is invalid or not present, then the implementation is required to ignore it. |
PollingLocationIds | xs:IDREFS |
Optional | Single | Specifies a link to the precinct’s PollingLocation object(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
PrecinctSplitName | xs:string |
Optional | Single | If this field is empty, then this Precinct object represents a full precinct. If this field is present, then this Precinct object represents one portion of a split precinct. Each Precinct object that represents one portion of a split precinct must have the same Name value, but different PrecinctSplitName values. See the sample_feed.xml file for examples. | If the field is invalid or not present, then the implementation is required to ignore it. |
SpatialBoundary | SpatialBoundary | Optional | Single | Defines the spatial boundary of the precinct. All voter addresses contained within this boundary are assigned to the precinct. If a voter address also maps to a StreetSegment, then the precinct assignment from the StreetSegment will be preferred over the assignment from the spatial boundary. | If the element is invalid or not present, then the implementation is required to ignore it. |
Ward | xs:string |
Optional | Single | Specifies the ward the precinct is contained within. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <Precinct id="pre90111">
<BallotStyleId>bs00010</BallotStyleId>
<ElectoralDistrictIds>ed60129 ed60311 ed60054</ElectoralDistrictIds>
<IsMailOnly>false</IsMailOnly>
<LocalityId>loc70001</LocalityId>
<Name>203 - GEORGETOWN</Name>
<Number>0203</Number>
<PollingLocationIds>pl81274</PollingLocationIds>
<SpatialBoundary>
<ExternalGeospatialFeature>
<ExternalFileId>ef1</ExternalFileId>
<FileFormat>shp</FileFormat>
<FeatureIdentifier>
<Index>3</Index>
</FeatureIdentifier>
</ExternalGeospatialFeature>
</SpatialBoundary>
</Precinct>
<!--
Precinct split. Name and PollingLocationIds are the same but
PrecinctSplitName is present, the ElectoralDistrictIds are different,
and the BallotStyleId is different.
-->
<Precinct id="pre90348sp0000">
<BallotStyleId>bs00002</BallotStyleId>
<ElectoralDistrictIds>ed60129 ed60054 ed60150</ElectoralDistrictIds>
<IsMailOnly>false</IsMailOnly>
<LocalityId>loc70001</LocalityId>
<Name>201 - JACK JOUETT</Name>
<Number>0201</Number>
<PollingLocationIds>pl00000 pl81273 pl81662</PollingLocationIds>
<PrecinctSplitName>0000</PrecinctSplitName>
</Precinct>
<Precinct id="pre90348sp0001">
<BallotStyleId>bs00015</BallotStyleId>
<ElectoralDistrictIds>ed60129 ed60054 ed60267</ElectoralDistrictIds>
<IsMailOnly>false</IsMailOnly>
<LocalityId>loc70001</LocalityId>
<Name>201 - JACK JOUETT</Name>
<Number>0201</Number>
<PollingLocationIds>pl00000 pl81273 pl81662</PollingLocationIds>
<PrecinctSplitName>0001</PrecinctSplitName>
</Precinct>
|
SpatialBoundary¶
The SpatialBoundary
object defines a boundary in space. This boundary is usually defined by one or more discrete, closed polygonal shapes.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalGeospatialFeature | ExternalGeospatialFeature | Required | Single | The spatial boundary defined by a geospatial feature that is external to the VIP feed. | If the element is invalid, then the
implementation is required to ignore the
SpatialBoundary element containing
it. |
1 2 3 4 5 6 7 8 9 | <SpatialBoundary>
<ExternalGeospatialFeature>
<ExternalFileId>ef1</ExternalFileId>
<FileFormat>shp</FileFormat>
<FeatureIdentifier>
<Index>3</Index>
</FeatureIdentifier>
</ExternalGeospatialFeature>
</SpatialBoundary>
|
ExternalGeospatialFeature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ExternalFileId | xs:IDREF |
Required | Single | Links to the ExternalFile containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FileFormat | GeospatialFormat | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier | FeatureIdentifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
FeatureIdentifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
RetentionContest¶
RetentionContest
extends BallotMeasureContest and represents a
contest where a candidate is retained in a position (e.g. a judge).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
CandidateId | xs:IDREF |
Required | Single | Links to the Candidate being retained. | If the field is invalid or not present,
the implementation is required to ignore
the RetentionContest element
containing it. |
OfficeId | xs:IDREF |
Optional | Single | Links to the information about the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 | <RetentionContest id="rc40001">
<BallotSelectionIds>rc40001a rc40001b</BallotSelectionIds>
<BallotTitle>
<Text language="en">Retention of Supreme Court Justice</Text>
<Text language="es">La retención de juez de la Corte Suprema</Text>
</BallotTitle>
<ElectoralDistrictId>ed60129</ElectoralDistrictId>
<Name>Judicial Retention, Supreme Court</Name>
<CandidateId>can14444</CandidateId>
<OfficeId>off20006</OfficeId>
</RetentionContest>
|
Source¶
The Source object represents the organization that is publishing the information. This object is the only required object in the feed file, and only one source object is allowed to be present.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
Name | xs:string |
Required | Single | Specifies the name of the organization that is providing the information. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
VipId | xs:string |
Required | Single | Specifies the ID of the organization. VIP uses FIPS codes for this ID. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
DateTime | xs:dateTime |
Required | Single | Specifies the date and time of the feed production. The date/time is considered to be in the timezone local to the organization. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
Description | InternationalizedText | Optional | Single | Specifies both the nature of the organization providing the data and what data is in the feed. | If the element is invalid or not present, then the implementation is required to ignore it. |
OrganizationUri | xs:string |
Optional | Single | Specifies a URI to the home page of the organization publishing the data. | If the field is invalid or not present, then the implementation is required to ignore it. |
FeedContactInformation | ContactInformation | Optional | Single | Reference to the Person who will respond to inquiries about the information contained within the file. | If the element is invalid or not present, then the implementation is required to ignore it. |
TouUri | xs:anyURI |
Optional | Single | Specifies the website where the Terms of Use for the information in this file can be found. | If the field is invalid or not present, then the implementation is required to ignore it. |
Version | xs:string |
Required | Single | Specifies the version of the data | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
1 2 3 4 5 6 7 8 9 10 | <Source id="src1">
<DateTime>2013-10-24T14:25:28</DateTime>
<Description>
<Text language="en">SBE is the official source for Virginia data</Text>
</Description>
<Name>State Board of Elections, Commonwealth of Virginia</Name>
<OrganizationUri>http://www.sbe.virginia.gov/</OrganizationUri>
<VipId>51</VipId>
<Version>5.0</Version>
</Source>
|
State¶
The State object includes state-wide election information. The ID attribute is recommended to be the state’s FIPS code, along with the prefix “st”.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ElectionAdministrationId | xs:IDREF |
Optional | Single | Links to the state’s election administration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
ExternalIdentifiers | ExternalIdentifiers | Optional | Single | Other identifier for the state that relates to another dataset (e.g. OCD-ID). | If the element is invalid or not present, then the implementation is required to ignore it. |
Name | xs:string |
Required | Single | Specifiers the name of a state, such as Alabama. | If the field is invalid, then the
implementation is required to ignore the
State element containing it. |
PollingLocationIds | xs:IDREFS |
Optional | Single | Specifies a link to the state’s polling locations. If early vote centers or ballot drop locations are state-wide (e.g., anyone in the state can use them), they can be specified here, but you are encouraged to only use the Precinct element. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 | <State id="st51">
<ElectionAdministrationId>ea40133</ElectionAdministrationId>
<ExternalIdentifiers>
<ExternalIdentifier>
<Type>ocd-id</Type>
<Value>ocd-division/country:us/state:va</Value>
</ExternalIdentifier>
</ExternalIdentifiers>
<Name>Virginia</Name>
</State>
|
StreetSegment¶
A Street Segment objection represents a portion of a street and the links to the precinct that this geography (i.e., segment) is contained within. The start address house number must be less than the end address house number unless the segment consists of only one address, in which case these values are equal.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
AddressDirection | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the entire address. An example is “NE” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
City | xs:string |
Required | Single | The city specifies the city or town of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
IncludesAllAddresses | xs:boolean |
Optional | Single | Specifies if the segment covers every address on this street. If this is true, then the values of StartHouseNumber and EndHouseNumber should be ignored. The value of OddEvenBoth must be both. | If the field is invalid or not present, then the implementation is required to ignore it. |
IncludesAllStreets | xs:boolean |
Optional | Single | Specifies if the segment covers every street in this city. If this is true, then the values of OddEvenBoth, StartHouseNumber, EndHouseNumber, StreetName, and Zip should be ignored. | If the field is invalid or not present, then the implementation is required to ignore it. |
OddEvenBoth | OebEnum | Optional | Single | Specifies whether the odd side of the street (in terms of house numbers), the even side, or both are in included in the street segment. | If the field is not present or invalid, the implementation is required to ignore the StreetSegment containing it. |
PrecinctId | xs:IDREF |
Required | Single | References the Precinct that contains the entire street segment. If a precinct has a SpatialBoundary which also contains the entire street segment, then the precinct assignment from the segment will be preferred over the assignment defined by the spatial boundary. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
StartHouseNumber | xs:integer |
Optional | Single | The house number at which the street segment starts. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, this value must be less than or equal to EndHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the StartHouseNumber is greater than the EndHouseNumber, the implementation should ignore the element containing them. |
EndHouseNumber | xs:integer |
Optional | Single | The house number at which the street segment ends. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, it must be greater than or equal to StartHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the EndHouseNumber is less than the StartHouseNumber, the implementation should ignore the element containing it. |
HouseNumberPrefix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., ‘B’ in ‘B22 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
HouseNumberSuffix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., 1/2 in ‘22 1/2 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
State | xs:string |
Required | Single | Specifies the two-letter state abbreviation of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
StreetDirection | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the street address (e.g., the “E” in “100 E Capitol St NE”). | If the field is invalid or not present, then the implementation is required to ignore it. |
StreetName | xs:string |
Optional | Single | Represents the name of the street for the address. A special wildcard, “*”, denotes every street in the given city/town. It optionally may contain street direction, street suffix or address direction (e.g., both “Capitol” and “E Capitol St NE” are acceptable for the address “100 E Capitol St NE”), however this is not preferred. Preferred is street name alone (e.g. “Capitol”). | If the field is invalid or not present, then the implementation is required to ignore it. |
StreetSuffix | xs:string |
Optional | Single | Represents the abbreviated, non-directional suffix to the street name. An example is “St” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
UnitNumber | xs:string |
Optional | Repeats | The apartment/unit number for a street segment. If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
Zip | xs:string |
Optional | Single | Specifies the zip code of the address. It may be 5 or 9 digits, and it may include a hyphen (‘-‘). It is required as it helps with geocoding, which is crucial for distributors. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <StreetSegment id="ss999999">
<City>Charlottesville</City>
<IncludesAllAddresses>true</IncludesAllAddresses>
<OddEvenBoth>both</OddEvenBoth>
<PrecinctId>pre99999</PrecinctId>
<State>VA</State>
<StreetName>CHAPEL HILL</StreetName>
<StreetSuffix>RD</StreetSuffix>
<Zip>22901</Zip>
</StreetSegment>
<StreetSegment id="ss309904">
<City>GREENWOOD</City>
<OddEvenBoth>both</OddEvenBoth>
<PrecinctId>pre92145</PrecinctId>
<StartHouseNumber>1</StartHouseNumber>
<EndHouseNumber>201</EndHouseNumber>
<State>VA</State>
<StreetName>MISTY MOUNTAIN</StreetName>
<StreetSuffix>RD</StreetSuffix>
<Zip>22943</Zip>
</StreetSegment>
<StreetSegment id = "ss1"
<City>GREENWOOD</City>
<OddEvenBoth>both</OddEvenBoth>
<PrecinctId>pre92145</PrecinctId>
<StartHouseNumber>1</StartHouseNumber>
<EndHouseNumber>1</EndHouseNumber>
<HouseNumberPrefix>B</HouseNumberPrefix>
<HouseNumberSuffix>1/2</HouseNumberSuffix>
<State>VA</State>
<StreetName>MISTY MOUNTAIN</StreetName>
<StreetSuffix>RD</StreetSuffix>
<Zip>22943</Zip>
</StreetSegment>
|
Enumerations (Separate Pages)¶
BallotMeasureType¶
A list of the various types of ballot measures. States may have different legal definitions of each type; Wikipedia has more details about each type. These values are to help states with multiple types of non-candidate-based contests distinguish between each type; as such, the definitions in this table are simple guidelines. Ultimately it is up to the state or local election official to choose the value which best describes the ballot measure(s) in their jurisdiction.
Tag | Description |
---|---|
ballot-measure | A catch-all for generic types of non-candidate-based contests. |
initiative | These are usually citizen-driven measures to be placed on the ballot. These could include both statutory changes and constitutional amendments. |
referendum | These could include measures to repeal existing acts of legislation, legislative referrals, and legislatively-referred state constitutional amendments. |
other | Anything that does not fall into the above categories. |
CandidatePostElectionStatus¶
Tag | Description |
---|---|
advanced-to-runoff | For contests in which the top N candidates advance to the next round. |
projected-winner | A candidate is expected to win, but official results are not yet complete. |
winner | The candidate has officially won. |
withdrawn | The candidate has withdrawn from the contest. |
CandidatePreElectionStatus¶
Tag | Description |
---|---|
filed | The candidate has filed for office but not yet been qualified. |
qualified | The candidate has qualified for the contest. |
withdrawn | The candidate has withdrawn from the contest (but may still be on the ballot). |
write-in |
ChecksumAlgorithm¶
Tag | Description |
---|---|
sha-256 | 256-bit cryptographic hash algorithm of the SHA-2 family |
sha-512 | 512-bit cryptographic hash algorithm of the SHA-2 family |
DistrictType¶
Enumeration describing the set of possible jurisdiction and district types. Please use the enumeration value which most accurately reflects the type of district or jurisdiction in your state or county. For example, “town” and “township” may mean different things – or not be defined at all – in your state, so please use the definition which best matches your local meaning.
Tag | Description |
---|---|
borough | A borough |
city | A city. |
city-council | A specific seat/jurisdiction for a city, town, or village council. |
congressional | A United States congressional district. |
county | A county. |
county-council | A county council district, either in its entirety or for a specific seat. |
judicial | A judicial district. |
municipality | A civil division which is not a town, city, village, or county. |
national | The United States. |
school | A school district. |
special | A special-purpose district that exist separate from general-purpose districts. |
state | A state, district, commonwealth, or U.S. territory. |
state-house | The lower house of a state legislature. |
state-senate | The upper house of a state legislature. |
town | A town. |
township | A township, which may be different than a town. See the Wikipedia article. |
utility | A non-water public or municipal utility district. |
village | A village district. |
ward | A ward. |
water | A water district. |
other | Any district not described above. Use the OtherType field to describe it. |
GeospatialFormat¶
Geospatial file formats that are supported by the VIP specification.
Tag | Description |
---|---|
shp | ESRI Shapefile (reference) |
IdentifierType¶
Tag | Description |
---|---|
fips | Federal Information Processing Standards codes for states, counties, and cities. |
local-level | An identifier generated or used by local governments or organizations. |
national-level | An identifier generated or used by national organizations. |
ocd-id | An Open Civic Data Division Identifier. |
state-level | An identifier generated or used by state governments or organizations. |
other | Any identifier which doesn’t fall into any of the above categories. |
OebEnum¶
Tag | Description |
---|---|
both | Both even and odd addresses within the range. |
even | Only even-numbered addresses within the range. |
odd | Only odd-numbered addresses within the range. |
OfficeTermType¶
Tag | Description |
---|---|
full-term | This election is for an office for which the existing term has been completed. |
unexpired-term | This election is for an office for which the original term is not yet complete. |
VoteVariation¶
Note that the descriptions below describe what the enumeration names stand for in the context of the VIP spec, rather than provide general definitions of the election terms that the names correspond to. For example, even though there are majority voting methods that are not “1-of-m” (e.g. ranked choice voting), we constrain “majority” to 1-of-m. We do this to eliminate any source of ambiguity when a single enumeration value needs to be assigned to a contest.
Tag | Description |
---|---|
1-of-m | A method where each voter can select up to one option. |
approval | Approval voting, where each voter can select as many options as desired. |
borda | Borda count, where each voter can rank the options, and the rankings are assigned point values. |
cumulative | Cumulative voting, where each voter can distribute their vote to up to N options. |
majority | A 1-of-m method where the winner needs more than 50% of the vote to be elected. |
n-of-m | A method where each voter can select up to N options. |
plurality | A 1-of-m method where the option with the most votes is elected, regardless of whether the option has more than 50% of the vote. |
proportional | A proportional representation method (other than STV), which is any system that elects winners in proportion to the total vote. |
range | Range voting, where each voter can select a score for each option. |
rcv | Ranked choice voting (RCV), where each voter can rank the options, and the ballots are counted in rounds. Also known as instant-runoff voting (IRV) and the single transferable vote (STV). |
super-majority | A 1-of-m method where the winner needs more than some predetermined fraction of the vote to be elected, where the fraction is more than 50% (e.g. three-fifths or two-thirds). |
other | Used when the vote variation type is not included in this enumeration. |
VoterServiceType¶
Tag | Description |
---|---|
absentee-ballots | This department handles the dispatch, tracking, and return of absentee ballots. |
overseas-voting | The department for overseas, military, and other outside-the-U.S. voters. |
polling-places | This deparment handles the selection and management of polling places. |
voter-registration | The deparment that manages voter registration. |
other | Any other service not covered by the above descriptions. |
CSV Documentation¶
CSV Specification¶
Getting Started¶
The CSV files contain election information, with files containing links between each other, that is compiled into an XML feed that represents the data according to the XML specification. See the `sample xml file`_ and `xsd file`_ for more details.
Certain files are required to serve different types of information. Below is a listing of which files are required for different VIP data sets.
- Required files:
- election.txt
- source.txt
- state.txt
- department.txt
- Files to serve polling locations:
- election_administration.txt
- department.txt
- locality.txt
- polling_location.txt
- precinct.txt
- street_segment.txt
- Files to serve candidate contests:
- candidate.txt
- candidate_contest.txt
- candidate_selection.txt
- office.txt
- Files to serve referenda and ballot measures:
- ballot_measure_contest.txt
- ballot_measure_selection.txt
- Files to serve retention contests:
- retention_contest.txt
CSV files must be comma-delimited, UTF-8 .txt files, named according to the specification. The id attribute for the state object should be the state’s FIPS number. The id attributes are not required to remain constant for the same piece of semantic data across multiple productions of the feed (e.g. candidate Michael Smith, running for dogcatcher in Iowa, is not required to have the same candidate id attribute each time the state of Iowa publishes data).
Elements & Enumerations¶
Single-page Format¶
CSV Elements & Enumerations (Single Page)¶
- Elements
- ballot_measure_contest
- ballot_measure_selection
- ballot_selection_base
- ballot_style
- candiate_selection
- candidate
- candidate_contest
- checksum
- contact_information
- contest_base
- department
- election
- election_administration
- election_notice
- electoral_district
- external_file
- external_geospatial_feature
- external_identifier
- external_identifiers
- feature_identifier
- hours
- hours_open
- time_with_zone
- html_color_string
- internationalized_text
- language_string
- lat_long
- locality
- office
- ordered_contest
- party
- party_contest
- party_selection
- person
- polling_location
- precinct
- retention_contest
- schedule
- simple_address_type
- source
- spatial_boundary
- state
- street_segment
- term
- time_with_zone
- voter_service
- Enumerations
Elements¶
ballot_measure_contest¶
The BallotMeasureContest provides information about a ballot measure before the voters, including summary statements on each side. Extends single-csv-contest-base.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
con_statement | xs:string |
Optional | Single | Specifies a statement in opposition to the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
effect_of_abstain | xs:string |
Optional | Single | Specifies what effect abstaining (i.e. not voting) on this proposition will have (i.e. whether abstaining is considered a vote against it). | If the element is invalid or not present, then the implementation is required to ignore it. |
full_text | xs:string |
Optional | Single | Specifies the full text of the referendum as it appears on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
info_uri | xs:anyURI |
Optional | Single | Specifies a URI that links to additional information about the referendum. | If the field is invalid or not present, then the implementation is required to ignore it. |
passage_threshold | xs:string |
Optional | Single | Specifies the threshold of votes that the referendum needs in order to pass. The default is a simple majority (i.e. 50% plus one vote). Other common thresholds are “three-fifths” and “two-thirds”. If there are `competing initiatives`_, information about their effect on the passage of the BallotMeasureContest would go here. | If the element is invalid or not present, then the implementation is required to ignore it. |
pro_statement | xs:string |
Optional | Single | Specifies a statement in favor of the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
summary_text | xs:string |
Optional | Single | Specifies a short summary of the referendum that is on the ballot, below the title, but above the text. | If the element is invalid or not present, then the implementation is required to ignore it. |
type | xs:string |
Optional | Single | Specifies the particular type of ballot measure. Must be one of the valid ballot_measure_type options. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | Allows for cataloging a new ballot_measure_type option, when Type is specified as “other.” | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 | id,abbreviation,ballot_selection_ids,ballot_sub_title,ballot_title,elecoral_district_id,electorate_specification,external_identifier_type,external_identifier_othertype,external_identifier_value,has_rotation,name,sequence_order,vote_variation,other_vote_variation,con_statement,effect_of_abstain,full_text,info_uri,passage_threshold,pro_statement,summary_text,type,other_type
bmc0001,HB2,bs001 bs002 bs003,Raising levy for School Bond,School Bond Issue,ed001,all registered voters,,54,false,School Bond,42,majority,,This is no good.,No effect,A measure to do raise funds for etc etc,www.ballotmeasure.com,two-thirds,Everything will be great.,It’s a referendum about school funding,referendum,
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-csv-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_measure_selection¶
Represents the possible selection (e.g. yes/no, recall/do not recall, et al) for a ballot_measure_contest that would appear on the ballot. BallotMeasureSelection extends single-csv-ballot-selection-base.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
selection | xs:string |
Required | Single | Selection text for a ballot_measure_contest | If the element is invalid or not present, the implementation is required to ignore the BallotMeasureSelection containing it. |
1 2 3 | id,sequence_order,selection
bms001,1,Proposition A
bms002,2,Proposition B
|
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_style¶
A container for the contests/measures on the ballot.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
image_uri | xs:anyURI |
Optional | Single | Specifies a URI that returns an image of the sample ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
ordered_contests_ids | xs:IDREFS |
Optional | Single | Reference to a set of ordered_contest | If the field is invalid or not present, then the implementation is required to ignore it. |
party_ids | xs:IDREFS |
Optional | Single | Reference to a set of :ref:`single-csv-party`s. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,image_uri,ordered_contest_ids,party_ids
bs00010,http://i.giphy.com/26BoCh3PgT8ai45ji.gif,oc2025,par02
bs00011,http://i.giphy.com/3oEjHYDWEICgEpAOjK.gif,oc3000 oc2025,par01
|
candiate_selection¶
CandidateSelection extends single-csv-ballot-selection-base and represents a ballot selection for a candidate contest.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
candidate_ids | xs:IDREFS |
Optional | Single | References a set of candidate elements. The number of candidates that can be references is unbounded in cases where the ballot selection is for a ticket (e.g. “President/Vice President”, “Governor/Lt Governor”). | If the field is invalid or not present, then the implementation is required to ignore it. |
endorsement_party_ids | xs:IDREFS |
Optional | Single | References a set of party elements, which signifies one or more endorsing parties for the candidate(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
is_write_in | xs:boolean |
Optional | Single | Signifies if the particular ballot selection allows for write-in candidates. If true, one or more write-in candidates are allowed for this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,sequence_order,candidate_ids,endorsement_party_ids,is_write_in
cs001,3,can004,par01,false
cs002,2,can001 can002,par03 par02,false
cs003,1,can003,par02 par03,true
|
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
candidate¶
The Candidate object represents a candidate in a contest. If a candidate is running in multiple contests, each contest must have its own Candidate object. Candidate objects may not be reused between Contests.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ballot_name | xs:string |
Required | Single | The candidate’s name as it will be displayed on the official ballot (e.g. “Ken T. Cuccinelli II”). | If the element is invalid, then the
implementation is required to ignore the
Candidate element containing it. |
contact_information | xs:string |
Optional | Single | Contact and physical address information for this Candidate and/or their campaign (see single-csv-contact-information). | If the element is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Another identifier for a candidate that links to another source of information (e.g. a campaign committee ID that links to a campaign finance system). | If the element is invalid or not present, then the implementation is required to ignore it. |
file_date | xs:date |
Optional | Single | Date when the candidate filed for the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_incumbent | xs:boolean |
Optional | Single | Indicates whether the candidate is the incumbent for the office associated with the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_top_ticket | xs:boolean |
Optional | Single | Indicates whether the candidate is the top of a ticket that includes multiple candidates. | If the field is invalid or not present, then the implementation is required to ignore it. |
party_id | xs:IDREF |
Optional | Single | Reference to a party element with additional information about the candidate’s affiliated party. This is the party affiliation that is intended to be presented as part of ballot information. | If the field is invalid or not present, then the implementation is required to ignore it. |
person_id | xs:IDREF |
Optional | Single | Reference to a person element with additional information about the candidate. | If the field is invalid or not present, then the implementation is required to ignore it. |
post_election_status | candidate_post_election_status | Optional | Single | Final status of the candidate (e.g. winner, withdrawn, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
pre_election_status | candidate_pre_election_status | Optional | Single | Registration status of the candidate (e.g. filed, qualified, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,ballot_name,external_identifier_type,external_identifier_othertype,external_identifier_value,file_date,is_incumbent,is_top_ticket,party_id,person_id,post_election_status,pre_election_status
can001,Jude Fawley,,,,2016-12-01,true,false,par01,per50001,,filed
can002,Arabella Donn,,,,2016-12-01,false,false,par02,per50002,,qualified
can003,John Coltrane,,,,2016-09-23,false,false,par02,per50003,,qualified
can004,Miles Davis,,,,2016-05-26,false,false,par01,per50004,,qualified
|
candidate_contest¶
CandidateContest extends single-csv-contest-base and represents a contest among candidates.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
number_elected | xs:integer |
Optional | Single | Number of candidates that are elected in the contest (i.e. “N” of N-of-M). | If the field is invalid or not present, then the implementation is required to ignore it. |
office_ids | xs:IDREFS |
Optional | Single | References a set of office elements, if available, which give additional information about the offices. Note: the order of the office IDs must be in the same order as the candidates listed in BallotSelectionIds. E.g., if the various BallotSelectionIds reference candiate_selection elements which reference the candidate for President first and Vice-President second, the OfficeIds should reference the office of President first and the office of Vice-President second. | If the field is invalid or not present, then the implementation is required to ignore it. |
primary_party_ids | xs:IDREFS |
Optional | Single | References party elements, if the contest is related to a particular party. | If the field is invalid or not present, then the implementation is required to ignore it. |
votes_allowed | xs:integer |
Optional | Single | Maximum number of votes/write-ins per voter in this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,abbreviation,ballot_selection_ids,ballot_sub_title,ballot_title,electoral_district_id,electorate_specification,external_identifier_type,external_identifier_othertype,external_identifier_value,has_rotation,name,sequence_order,vote_variation,other_vote_variation,number_elected,office_ids,primary_party_ids,votes_allowed
cancon001,SE-1,bs001 bs002,,Governor of Virginia,ed001,all registered voters,fips,,49,true,Governor,1,,,1,off001,par01,1
cancon002,SE-2,bs003 bs004,,Lieutenant Governor of Virginia,ed001,all registered voters,fips,,49,true,Lt Governor,2,,,1,off002,par01,1
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-csv-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
checksum¶
The Checksum
object contains information about a cryptographic checksum, including
the raw checksum value and the cryptographic hash algorithm used to compute it.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
algorithm | checksum_algorithm | Required | Single | The cryptographic hash algorithm used to compute the checksum value. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
value | xs:string |
Required | Single | The raw cryptographic checksum value encoded as a non-delimited, lowercase hexadecimal string. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
1 2 | id,algorithm,value
ch1,sha-256,65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e
|
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | single-csv-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-csv-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
department¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | single-csv-contact-information | Optional | Single | Contact and physical address information for the election administration body (see single-csv-contact-information). | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The individual to contact at the election administration office. The specified person should be the election official. | If the field is invalid or not present, then the implementation is required to ignore it. |
voter_service | single-csv-voter-service | Optional | Repeats | The types of services and appropriate contact individual available to voters. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,election_official_person_id,election_administration_id
dep01,per50002,ea123
dep02,per50002,ea345
dep03,per50002,ea625
dep04,per50002,ea625
|
voter_service¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | single-csv-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | voter_service_type | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 | id,description,election_official_person_id,type,other_type,department_id
vs01,A service we provide,per50002,other,overseas-voting,dep01
vs00,Elections notifications,per50002,other,voter-registration,dep02
vs02,Pencil sharpening,per50002,other,office-help,dep03
vs03,Guided hike to polling place,per50002,other,polling-places,dep03
vs04,Bike messenger ballot delivery,per50002,other,absentee-ballots,dep03
|
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | single-csv-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
election¶
The Election object represents an Election Day, which usually consists of many individual contests and/or referenda. A feed must contain exactly one Election object. All relationships in the feed (e.g., street segment to precinct to polling location) are assumed to relate only to the Election specified by this object. It is permissible, and recommended, to combine unrelated contests (e.g., a special election and a general election) that occur on the same day into one feed with one Election object.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
date | xs:date |
Required | Single | Specifies when the election is being held. The Date is considered to be in the timezone local to the state holding the election. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
election_type | xs:string |
Optional | Single | Specifies the highest controlling authority for election (e.g., federal, state, county, city, town, etc.) | If the element is invalid or not present, then the implementation is required to ignore it. |
state_id | xs:IDREF |
Required | Single | Specifies a link to the State element where the election is being held. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
is_statewide | xs:boolean |
Optional | Single | Indicates whether the election is statewide. | If the field is not present or invalid, the implementation is required to default to “yes”. |
name | xs:string |
Optional | Single | The name for the election (NB: while optional, this element is highly recommended). | If the element is invalid or not present, then the implementation is required to ignore it. |
registration_info | xs:string |
Optional | Single | Specifies information about registration for this election either as text or a URI. | If the element is invalid or not present, then the implementation is required to ignore it. |
absentee_ballot_info | xs:string |
Optional | Single | Specifies information about requesting absentee ballots either as text or a URI | If the element is invalid or not present, then the implementation is required to ignore it. |
results_uri | xs:anyURI |
Optional | Single | Contains a URI where results for the election may be found | If the field is invalid or not present, then the implementation is required to ignore it. |
polling_hours | xs:string |
Optional | Single | Contains the hours (in local time) that Election Day polling locations are open. If polling hours differ in specific polling locations, alternative hours may be specified in the polling_location object (NB: this element is deprecated in favor of the more structured :ref:`single-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_ids | xs:IDREF |
Optional | Single | References the hours_open element, which lists the hours of operation for polling locations. | If the field is invalid or not present, then the implementation is required to ignore it. |
has_election_day_registration | xs:boolean |
Optional | Single | Specifies if a voter can register on the same day of the election (i.e., the last day of the election). Valid items are “yes” and “no”. | If the field is invalid or not present, then the implementation is required to ignore it. |
registration_deadline | xs:date |
Optional | Single | Specifies the last day to register for the election with the possible exception of Election Day registration. | If the field is invalid or not present, then the implementation is required to ignore it. |
absentee_request_deadline | xs:date |
Optional | Single | Specifies the last day to request an absentee ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 | id,date,name,election_type,state_id,is_statewide,registration_info,absentee_ballot_info,results_uri,polling_hours,has_election_day_registration,registration_deadline,absentee_request_deadline,hours_open_id
e001,10-08-2016,Best Hot Dog,State,st51,true,www.registrationinfo.com,You can vote absentee,http://hotdogcontest.gov/results,Noon to 3p.m.,true,10/08/2016,,ho002
|
election_administration¶
The Election Administration represents an institution for serving a locality’s (or state’s) election functions.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
absentee_uri | xs:anyURI |
Optional | Single | Specifies the web address for information on absentee voting. | If the field is invalid or not present, then the implementation is required to ignore it. |
am_i_registered_uri | xs:anyURI |
Optional | Single | Specifies the web address for information on whether an individual is registered. | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_tracking_uri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a ballot cast by mail | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_tracking_provisional_uri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a provisional ballot. To support EAC guidelines for “Processing Provisional Ballots” (https://www.eac.gov/research-and-data/provisional-voting/) | If the field is invalid or not present, then the implementation is required to ignore it. |
department | single-csv-department | Required | Repeats | Describes the administrative body for a particular voter service. | There must be at least one valid Department in each ElectionAdministration element. If no valid Department objects are present, the implementation is required to ignore the ElectionAdministration object that contains it/them. |
election_notice | single-csv-election-notice | Optional | Single | A place for election administrators to post last minute and emergency notifications pertaining to the election. | If the element is invalid or not present, then the implementation is required to ignore it. |
elections_uri | xs:anyURI |
Optional | Single | Specifies web address the administration’s website. | If the field is invalid or not present, then the implementation is required to ignore it. |
registration_uri | xs:anyURI |
Optional | Single | Specifies web address for information on registering to vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
rules_uri | xs:anyURI |
Optional | Single | Specifies a URI for the election rules and laws (if any) for the jurisdiction of the administration. | If the field is invalid or not present, then the implementation is required to ignore it. |
what_is_on_my_ballot | xs:anyURI |
Optional | Single | Specifies web address for information on what is on an individual’s ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
where_do_i_vote_uri | xs:anyURI |
Optional | Single | The Specifies web address for information on where an individual votes based on their address. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,absentee_uri,am_i_registered_uri,ballot_tracking_uri,ballot_tracking_provisional_uri,election_notice_text,election_notice_uri,elections_uri,registration_uri,rules_uri,what_is_on_my_ballot_uri,where_do_i_vote_uri
ea123,https://example.com/absentee,https://example.com/am-i-registered,https://www.vote.virginia.gov/,https://www.vote.virginia.gov/,This is an emergency notification for this election.,https://www.yadayada.gov,https://example.com/elections,https://example.com/registration,https://example.com/rules,https://example.com/what-is-on-my-ballot,https://example.com/where-do-i-vote
ea345,https://example.com/absentee2,https://example.com/am-i-registered2,https://example.com/elections2,https://example.com/registration2,,,https://example.com/rules2,https://example.com/what-is-on-my-ballot2,https://example.com/where-do-i-vote2
ea625,https://example.com/absentee3,https://example.com/am-i-registered3,https://example.com/elections3,https://example.com/registration3,This is an emergency notification for this election.,,https://example.com/rules3,https://example.com/what-is-on-my-ballot3,https://example.com/where-do-i-vote3
|
department¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | single-csv-contact-information | Optional | Single | Contact and physical address information for the election administration body (see single-csv-contact-information). | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The individual to contact at the election administration office. The specified person should be the election official. | If the field is invalid or not present, then the implementation is required to ignore it. |
voter_service | single-csv-voter-service | Optional | Repeats | The types of services and appropriate contact individual available to voters. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,election_official_person_id,election_administration_id
dep01,per50002,ea123
dep02,per50002,ea345
dep03,per50002,ea625
dep04,per50002,ea625
|
voter_service¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | single-csv-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | voter_service_type | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 | id,description,election_official_person_id,type,other_type,department_id
vs01,A service we provide,per50002,other,overseas-voting,dep01
vs00,Elections notifications,per50002,other,voter-registration,dep02
vs02,Pencil sharpening,per50002,other,office-help,dep03
vs03,Guided hike to polling place,per50002,other,polling-places,dep03
vs04,Bike messenger ballot delivery,per50002,other,absentee-ballots,dep03
|
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | single-csv-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
election_notice¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_notice_text | xs:string |
Required | Single | The last minute or emergency notification text should be placed here. | If the element is invalid, then the
implementation is required to ignore the
ElectionNotice element containing
it. |
election_notice_uri | xs:string |
Optional | Single | Optional URL for additional information related to the last minute or emergency notification. | If the field is invalid or not present, then the implementation is required to ignore it. |
voter_service¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | single-csv-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | voter_service_type | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 | id,description,election_official_person_id,type,other_type,department_id
vs01,A service we provide,per50002,other,overseas-voting,dep01
vs00,Elections notifications,per50002,other,voter-registration,dep02
vs02,Pencil sharpening,per50002,other,office-help,dep03
vs03,Guided hike to polling place,per50002,other,polling-places,dep03
vs04,Bike messenger ballot delivery,per50002,other,absentee-ballots,dep03
|
election_notice¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_notice_text | xs:string |
Required | Single | The last minute or emergency notification text should be placed here. | If the element is invalid, then the
implementation is required to ignore the
ElectionNotice element containing
it. |
election_notice_uri | xs:string |
Optional | Single | Optional URL for additional information related to the last minute or emergency notification. | If the field is invalid or not present, then the implementation is required to ignore it. |
electoral_district¶
The ElectoralDistrict
object represents the geographic area in which contests are held. Examples
of ElectoralDistrict
include: “the state of Maryland”, “Virginia’s 5th Congressional District”,
or “Union School District”. The geographic area that comprises a ElectoralDistrict
is defined by
which precincts link to the ElectoralDistrict
.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_identifiers | external_identifiers | Optional | Single | Other identifiers that link to external datasets (e.g. OCD-IDs) | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Required | Single | Specifies the electoral area’s name. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
number | xs:integer |
Optional | Single | Specifies the district number of the district (e.g. 34, in the case of the 34th State Senate District). If a number is not applicable, instead of leaving the field blank, leave this field out of the object; empty strings are not valid for xs:integer fields. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | district_type | Required | Single | Specifies the type of electoral area. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
other_type | xs:string |
Optional | Single | Allows for cataloging a new
district_type option
when Type is specified as “other”. |
If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,external_identifier_type,external_identifier_othertype,external_identifier_value,name,number,type,other_type
ed001,ocd-id,,ocd-division/country:us/state:ny/borough:brooklyn,Brooklyn,1,borough,
ed002,other,community-board,4,CB 4,2,other,community-board
|
external_file¶
The ExternalFile
object holds a reference to a file external to the feed itself.
External files are packaged along with the VIP feed into a single, archived file.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
file_uri | xs:anyURI |
Required | Single | The URI of the external file. | If the field is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
checksum_id | xs:IDREF |
Required | Single | The cryptographic checksum of the referenced external file. | If the element is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
1 2 | id,file_uri,checksum_id
ef1,precinct_shapes.zip,ch1
|
checksum¶
The Checksum
object contains information about a cryptographic checksum, including
the raw checksum value and the cryptographic hash algorithm used to compute it.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
algorithm | checksum_algorithm | Required | Single | The cryptographic hash algorithm used to compute the checksum value. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
value | xs:string |
Required | Single | The raw cryptographic checksum value encoded as a non-delimited, lowercase hexadecimal string. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
1 2 | id,algorithm,value
ch1,sha-256,65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e
|
external_geospatial_feature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_file_id | xs:IDREF |
Required | Single | Links to the external_file containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
file_format | geospatial_format | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
feature_identifier | single-csv-feature-identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
1 2 | id,external_file_id,file_format,shape_identifiers
egf1,ef1,shp,0 7 9
|
feature_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
type | identifier_type |
Required | Single | Specifies the type of identifier. Must be one of the valid types as defined by identifier_type. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
other_type | xs:string |
Optional | Single | Allows for cataloging an
ExternalIdentifier type that falls
outside the options listed in
identifier_type.
Type should be set to “other” when
using this field. |
If the field is invalid or not present, then the implementation is required to ignore it. |
value | xs:string |
Required | Single | Specifies the identifier. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
external_identifiers¶
The ExternalIdentifiers
element allows VIP data to connect with external datasets (e.g.
candidates with campaign finance datasets, electoral geographies with OCD-IDs that allow for
greater connectivity with additional datasets, etc…). Examples for ExternalIdentifiers
can be
found on the objects that support them:
- candidate
- Any element that extends single-csv-contest-base
- electoral_district
- locality
- office
- party
- precinct
- state
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_identifier | external_identifier | Required | Repeats | Defines the identifier and the type of identifier it is (see `ExternalIdentifier`_ for complete information). | At least one valid `ExternalIdentifier`_
must be present for
ExternalIdentifiers to be valid. If
no valid `ExternalIdentifier`_ is
present, the implementation is required
to ignore the ExternalIdentifiers
element. |
feature_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
start_time | single-csv-time-with-zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
end_time | single-csv-time-with-zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
time_with_zone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
hours_open¶
A structured way of describing the days and hours that a place such as a office or polling_location is open, or that an event such as an election is happening. The range of days indicated by the StartDate and EndDate in each `Schedule`_ element should not overlap with peer `Schedule`_ elements. For example, it is invalid to specify a schedule from 10/01/2016 to 10/31/2016 and also specify a schedule from 10/10/2016 to 10/11/2016 within the same HoursOpen element.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
schedule | single-csv-schedule | Required | Repeats | Defines a block of days and hours that a place will be open. | At least one valid `Schedule`_ must be
present for HoursOpen to be valid.
If no valid `Schedule`_ is present, the
implementation is required to ignore the
HoursOpen element. |
schedule¶
A sub-portion of the schedule. This describes a range of days, along with one or more set of open and close times for those days, as well as the options describing whether or not appointments are necessary or possible.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
hours | single-csv-hours | Optional | Repeats | Blocks of hours in the date range in which the place is open. | If the element is invalid or not present, then the implementation is required to ignore it. |
is_only_by_appointment | xs:boolean |
Optional | Single | If true, the place is only open during the specified time window with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_or_by_appointment | xs:boolean |
Optional | Single | If true, the place is open during the hours specified time window and may also be open with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_subject_to_change | xs:boolean |
Optional | Single | If true, the place should be open during the specified time window, but may be subject to change. People should contact prior to arrival to confirm hours are still accurate. | If the field is invalid or not present, then the implementation is required to ignore it. |
start_date | xs:date |
Optional | Single | The date at which this collection of start and end times and options begin. | If the field is invalid or not present, then the implementation is required to ignore it. |
end_date | xs:date |
Optional | Single | The date at which this collection of start and end times and options end. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,start_time,end_time,is_only_by_appointment,is_or_by_appointment,is_subject_to_change,start_date,end_date,hours_open_id
sch001,07:00:00-06:00,22:00:00-06:00,,true,,2016-10-10,2016-10-12,ho001
sch002,09:00:00-06:00,20:00:00-06:00,true,,,2016-10-13,2016-10-15,ho001
sch003,08:00:00-06:00,14:00:00-06:00,,,true,2016-10-10,2016-10-15,ho002
|
hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
start_time | single-csv-time-with-zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
end_time | single-csv-time-with-zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
time_with_zone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
html_color_string¶
A restricted string pattern for a six-character hex code representing an HTML color string. The pattern is:
[0-9a-f]{6}
internationalized_text¶
InternationalizedText
allows for support of multiple languages for a string.
InternationalizedText
has an optional attribute label
, which allows the feed to refer
back to the original label for the information (e.g. if the contact information came from a
CSV, label
may refer to a row ID). Examples of InternationalizedText
can be seen in:
* Any element that extends single-csv-contest-base
* Any element that extends single-csv-ballot-selection-base
* candidate
* single-csv-contact-information
* election
* election_administration
* office
* party
* person
* polling_location
* source
NOTE: Internationalized Text is not currently supported for CSV submissions. “
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
text | xs:string |
Required | Repeats | Contains the translations of a particular string of text. | At least one valid Text must be
present for InternationalizedText to
be valid. If no valid Text is
present, the implementation is required
to ignore the InternationalizedText
element. |
language_string¶
LanguageString
extends xs:string and can contain text from any language. LanguageString
has one required attribute, language
, that must contain the 2-character language code for the
type of language LanguageString
contains.
1 2 3 4 | <BallotTitle>
<Text language="en">Retention of Supreme Court Justice</Text>
<Text language="es">La retención de juez de la Corte Suprema</Text>
</BallotTitle>
|
lat_long¶
The latitude and longitude of a polling location in `WGS 84`_ format. Both latitude and longitude values are measured in decimal degrees.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
latitude | xs:double |
Required | Single | The latitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
longitude | xs:double |
Required | Single | The longitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
latlng_source | xs:string |
Optional | Single | The system used to perform the lookup from location name to lat/lng. For example, this could be the name of a geocoding service. | If the field is invalid or not present, then the implementation is required to ignore it. |
locality¶
The Locality object represents the jurisdiction below the state (e.g. county).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_administration_id | xs:IDREF |
Optional | Single | Links to the locality’s election_administration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Another identifier for a locality that links to another dataset (e.g. `OCD-ID`_) | If the element is invalid or not present, then the implementation is required to ignore it. |
is_mail_only | xs:boolean |
Optional | Single | Determines if the locality runs mail-only elections. If this is true, then all precincts a part of the locality will also run mail-only elections. Drop boxes may be used in addition to this flag using a polling location record configured as a Drop Box. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
name | xs:string |
Required | Single | Specifies the name of a locality. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
polling_location_ids | xs:IDREFS |
Optional | Single | Specifies a link to a set of the locality’s :ref:`polling locations <single-csv-polling-location>`s. If early vote centers or ballot drop locations are locality-wide, they should be specified here. | If the field is invalid or not present, the implementation is required to ignore it. However, the implementation should still check to see if there are any polling locations associated with this locality’s state. |
state_id | xs:IDREF |
Required | Single | References the locality’s state. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
type | district_type | Optional | Single | Defines the kind of locality (e.g. county, town, et al.), which is one of the various DistrictType enumerations. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | Allows for defining a type of locality that falls outside the options listed in DistrictType. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,election_administration_id,external_identifier_type,external_identifier_othertype,external_identifier_value,is_mail_only,name,polling_location_ids,state_id,type,other_type
loc001,ea123,ocd-id,,ocd-division/country:us/state:co/county:denver,true,Locality #1,poll001 poll002,st51,city,
loc002,ea345,,,,,Locality #2,,st51,other,unique type
|
office¶
Office
represents the office associated with a contest or district (e.g. Alderman, Mayor,
School Board, et al).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information_id | xs:IDREF |
Optional | Repeats | Links to the single-csv-contact-information element associated with the office. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | A brief description of the office and its purpose. | If the element is invalid or not present, then the implementation is required to ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | Links to the electoral_district element associated with the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
external_identifiers | xs:IDREF |
Optional | Single | Other identifiers that link this office to other related datasets (e.g. campaign finance systems, OCD IDs, et al.). | If the element is invalid or not present, then the implementation is required to ignore it. |
filing_deadline | xs:date |
Optional | Single | Specifies the date and time when a candidate must have filed for the contest for the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_partisan | xs:boolean |
Optional | Single | Indicates whether the office is partisan. | If the field is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Required | Single | The name of the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
office_holder_person_ids | xs:IDREFS |
Optional | Single | Links to the person element(s) that hold additional information about the current office holder(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
term | single-csv-term | Optional | Single | Defines the term the office can be held. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,electoral_district_id,external_identifier_type,external_identifier_othertype,external_identifier_value,filing_deadline,is_partisan,name,office_holder_person_ids,term_type,term_start_date,term_end_date
off001,ed001,,,,,true,Deputy Chief of Staff,per50003,full-term,2002-01-21,
off002,ed001,,,,,true,Deputy Deputy Chief of Staff,per50001,unexpired-term,2002-01-21,
off003,ed001,,,,,false,General Secretary of Secretaries,per50004,full-term,2002-01-21,
|
term¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
term_type | office_term_type | Optional | Single | Specifies the type of office term (see office_term_type for valid values). | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
term_start_date | xs:date |
Optional | Single | Specifies the start date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
term_end_date | xs:date |
Optional | Single | Specifies the end date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | single-csv-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
ordered_contest¶
OrderedContest
encapsulates links to the information that comprises a contest and potential
ballot selections. OrderedContest
elements can be collected within a
ballot_style to accurate depict exactly what will show up on a particular
ballot in the proper order.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contest_id | xs:IDREF |
Required | Single | Links to elements that extend single-csv-contest-base. | If the field is invalid or not present, the
implementation is required to ignore the
OrderedContest element containing it. |
ordered_ballot_selection_ids | IDREFS |
Optional | Single | Links to elements that extend single-csv-ballot-selection-base. | If the field is invalid or not present, the
implementation is required to ignore it. If an
OrderedBallotSelectionIds element is not
present, the presumed order of the selection
will be the order of
single-csv-ballot-selection-base-extended
elements referenced by the underlying
single-csv-contest-base-extended
elements. |
1 2 3 | id,contest_id,ordered_ballot_selection_ids
oc2025,con001,bs001 bs002 bs003
oc3000,con002,bs001
|
party¶
This element describes a political party and the metadata associated with them. These can also include “dummy” parties to indicate a type of contest (e.g., a Voter Nominated candidate_contest can use the PrimaryPartyIds field and a dummy Party object to indicate that the contest is a “Top-Two” primary).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the party name. | If the field is invalid or not present, then the implementation is required to ignore it. |
color | single-csv-html-color-string | Optional | Single | The preferred display color for the party, for use in maps and other displays. | If the element is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Other identifiers that link this party to other related data sets (e.g. a campaign finance system, etc). | If the element is invalid or not present, then the implementation is required to ignore it. |
is_write_in | xs:boolean |
Optional | Single | Signals if this political party is one that is officially recognized by a local, state, or federal organization, or is a “write-in” in jurisdictions which allow candidates to free-form enter their political affiliation. If this field is not present then it is assumed to be false. | If the field is invalid or not present, then the implementation is required to ignore it. |
leader_person_ids | xs:IDREFS |
Optional | Single | A reference of person elements which are leaders of the Party. | If the field is invalid or not present, then the implementation is required to ignore it. |
logo_uri | xs:anyURI |
Optional | Single | Web address of a logo to use in displays. | If the field is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the party. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,abbreviation,color,external_identifier_type,external_identifier_othertype,external_identifier_value,is_write_in,leader_person_ids,logo_uri,name
par01,REP,ff0000,,,,true,,http://example.com/elephant.png,Republican
par02,DEM,0000ff,,,,false,per01,http://example.com/donkey.png,Democrat
par03,GRN,efefef,,,,,,http://example.com/tree.png,Green
par04,WFP,ee99aa,,,,,,http://example.com/worker.png,Working Families Party
|
html_color_string¶
A restricted string pattern for a six-character hex code representing an HTML color string. The pattern is:
[0-9a-f]{6}
party_contest¶
An extension of single-csv-contest-base which describes a contest in which the possible ballot selections are of type party_selection. These could include contests in which straight-party selections are allowed, or party-list contests (although these are more common outside of the United States).
1 2 | id,abbreviation,ballot_selection_ids,ballot_sub_title,ballot_title,electoral_district_id,electorate_specification,external_identifier_type,external_identifier_othertype,external_identifier_value,has_rotation,name,sequence_order,vote_variation,other_vote_variation
pcon001,PC1071,bs001 bs002,,Party Election,ed001,all registered voters,,,,false,Straight Party Vote,3,,
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends single-csv-ballot-selection-base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
party_selection¶
This element extends single-csv-ballot-selection-base to support contests in which the selections can be groups of one or more parties.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
party_ids | xs:IDREFS |
Required | Single | One or more party IDs which collectively represent a ballot selection. | If one or more parties referenced are invalid or not present, the implementation is required to ignore the PartySelection containing it. |
1 2 3 4 | id,sequence_order,party_ids
ps001,1,par01 par04
ps002,2,par02
ps003,3,par03
|
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
person¶
Person
defines information about a person. The person may be a candidate, election administrator,
or elected official. These elements reference Person
:
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information_id | xs:IDREF |
Optional | Repeats | Refers to the associated single-csv-contact-information. | If the element is invalid or not present, then the implementation is required to ignore it. |
date_of_birth | xs:date |
Optional | Single | Represents the individual’s date of birth. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Identifiers for this person. | If the element is invalid or not present, then the implementation is required to ignore it. |
first_name | xs:string |
Optional | Single | Represents an individual’s first name. | If the field is invalid or not present, then the implementation is required to ignore it. |
full_name | xs:string |
Optional | Single | Specifies a person’s full name (NB: this information is internationalized_text because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
gender | xs:string |
Optional | Single | Specifies a person’s gender. | If the field is invalid or not present, then the implementation is required to ignore it. |
last_name | xs:string |
Optional | Single | Represents an individual’s last name. | If the field is invalid or not present, then the implementation is required to ignore it. |
middle_name | xs:string |
Optional | Repeats | Represents any number of names between an individual’s first and last names (e.g. John Ronald Reuel Tolkien). | If the field is invalid or not present, then the implementation is required to ignore it. |
nickname | xs:string |
Optional | Single | Represents an individual’s nickname. | If the field is invalid or not present, then the implementation is required to ignore it. |
party_id | xs:IDREF |
Optional | Single | Refers to the associated party. This information is intended to be used by feed consumers to help them disambiguate the person’s identity, but not to be presented as part of any ballot information. For that see candidate PartyId. | If the field is invalid or not present, then the implementation is required to ignore it. |
prefix | xs:string |
Optional | Single | Specifies a prefix associated with a person (e.g. Dr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
profession | xs:string |
Optional | Single | Specifies a person’s profession (NB: this information is internationalized_text because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
suffix | xs:string |
Optional | Single | Specifies a suffix associated with a person (e.g. Jr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
title | xs:string |
Optional | Single | A title associated with a person (NB: this information is internationalized_text because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,date_of_birth,first_name,gender,last_name,middle_name,nickname,party_id,prefix,profession,suffix,title
per50001,1961-08-04,Barack,male,Obama,Hussein,,par02,,President,II,Mr. President
per50002,1985-11-21,Carly,female,Jepsen,Rae,,par01,,Recording Artist,,
per50003,1926-09-23,John,male,Coltrane,William,Trane,par02,,Recording Artist,Saint,
per50004,1926-05-26,Miles,male,Davis,Dewey,,par01,,Recording Artist,III,
|
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`single-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | single-csv-lat-lng | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
polling_location¶
The PollingLocation object represents a site where voters cast or drop off ballots.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
single-csv-simple-address-type | simple-address-type |
Optional | Single | Represents the various structured parts of an address to a polling location. | One of AddressStructured and
AddressLine should be present for a
given Polling Location. If none is
present, the implementation is required
to ignore the PollingLocation
element containing it. |
address_line | xs:string |
Optional | Repeats | Represents the various parts of an address to a polling location. | One of AddressStructured and AddressLine
should be present for a given Polling
Location. If none is present, the
implementation is required to ignore the
PollingLocation element containing
it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating the polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the polling location is open (NB: this element is deprecated in favor of the more structured hours_open element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | Links to an hours_open element, which is a schedule of dates and hours during which the polling location is available. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_drop_box | xs:boolean |
Optional | Single | Indicates if this polling location is a drop box. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_early_voting | xs:boolean |
Optional | Single | Indicates if this polling location is an early vote site. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_lng | single-csv-lat-lng | Optional | Single | Specifies the latitude and longitude of this polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | Name of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
photo_uri | xs:string |
Optional | Single | Contains a link to an image of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,name,address_line,structured_line_1,structured_city,structured_state,structured_zip,directions,hours,photo_uri,hours_open_id,is_drop_box,is_early_voting,latitude,longitude,latlng_source
poll001,ALBERMARLE HIGH SCHOOL,,2775 Hydraulic Rd,Charlottesville,VA,22901,Use back door,7am-8pm,www.picture.com,ho001,false,true,38.0754627,78.5014875,Google Maps
poll002,Public Library,Main St Denver CO,,,,,,next to the checkout counter,7am-8pm,www.picture.com,,false,true,38.0754627,78.5014875,Google Maps
|
lat_long¶
The latitude and longitude of a polling location in `WGS 84`_ format. Both latitude and longitude values are measured in decimal degrees.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
latitude | xs:double |
Required | Single | The latitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
longitude | xs:double |
Required | Single | The longitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
latlng_source | xs:string |
Optional | Single | The system used to perform the lookup from location name to lat/lng. For example, this could be the name of a geocoding service. | If the field is invalid or not present, then the implementation is required to ignore it. |
simple_address_type¶
A SimpleAddressType
represents a structured address.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
structured_line_1 | xs:string |
Required | Single | The address line for a structured address. Should include the street number, street name, and any prefix and suffix. | If no Line1 is provided, the
implementation should ignore the
SimpleAddressType . |
structured_line_2 | xs:string |
Optional | Single | Additional field for an address | If no Line2 is provided, the
implementation should ignore it. |
structured_line_3 | xs:string |
Optional | Single | Additional field for an address | If no Line3 is provided, the
implementation should ignore it. |
structured_city | xs:string |
Required | Single | The City value of a structured address. | If City is not provided, the
implementation should ignore the
SimpleAddressType . |
structured_state | xs:string |
Required | Single | The State value of a structured address. | If State is not provided, the
implementation should ignore the
SimpleAddressType . |
structured_zip | xs:string |
Optional | Single | The ZIP code of a structured address. | If Zip is not provided, the
implementation should ignore the
SimpleAddressType . |
precinct¶
The Precinct object represents a precinct, which is contained within a Locality. While the id attribute does not have to be static across feeds for one election, the combination of Source.VipId, Locality.Name, Precinct.Ward, Precinct.Name, and Precinct.Number should remain constant across feeds for one election (NB: not all of the fields just mentioned are required – omitting those non-required fields is fine).
Voters can be assigned to a precinct in two ways. A voter location modeled by StreetSegment is assigned to a precinct by StreetSegment.PrecinctId. Alternatively, a precinct’s spatial boundary can be modeled with Precinct.SpatialBoundary. Any registered voter address contained within the spatial boundary of the precinct is assigned to that precinct.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ballot_style_id | xs:IDREF |
Optional | Single | Links to the ballot_style, which a person who lives in this precinct will vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
electoral_district_ids | xs:IDREFS |
Optional | Single | Links to the :ref:`single-csv-electoral-district`s (e.g., congressional district, state house district, school board district) to which the entire precinct/precinct split belongs. Highly Recommended if candidate information is to be provided. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Other identifier for the precinct that relates to another dataset (e.g. `OCD-ID`_). | If the element is invalid or not present, then the implementation is required to ignore it. |
is_mail_only | xs:boolean |
Optional | Single | Determines if the precinct runs mail-only elections. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
locality_id | xs:IDREF |
Required | Single | Links to the locality that comprises the precinct. | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
name | xs:string |
Required | Single | Specifies the precinct’s name (or number if no name exists). | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
number | xs:string |
Optional | Single | Specifies the precinct’s number (e.g., 32 or 32A – alpha characters are legal). Should be used if the Name field is populated by a name and not a number. | If the field is invalid or not present, then the implementation is required to ignore it. |
polling_location_ids | xs:IDREFS |
Optional | Single | Specifies a link to the precinct’s polling_location object(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
precinct_split_name | xs:string |
Optional | Single | If this field is empty, then this Precinct object represents a full precinct. If this field is present, then this Precinct object represents one portion of a split precinct. Each Precinct object that represents one portion of a split precinct must have the same Name value, but different PrecinctSplitName values. See the sample_feed.xml file for examples. | If the field is invalid or not present, then the implementation is required to ignore it. |
spatial_boundary_id | xs:IDREF |
Optional | Single | Defines the spatial boundary of the precinct. All voter addresses contained within this boundary are assigned to the precinct. If a voter address also maps to a StreetSegment, then the precinct assignment from the StreetSegment will be preferred over the assignment from the spatial boundary. | If the element is invalid or not present, then the implementation is required to ignore it. |
ward | xs:string |
Optional | Single | Specifies the ward the precinct is contained within. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,ballot_style_id,electoral_district_ids,external_identifier_type,external_identifier_othertype,external_identifier_value,is_mail_only,locality_id,name,number,polling_location_ids,precinct_split_name,spatial_boundary_id,ward
pre90111,bs00010,ed001,ocd-id,,ocd-division/country:us,false,loc001,203 - GEORGETOWN,0203,poll001 poll002,split13,sb1,,5
pre90112,bs00011,ed002,fips,,42,false,loc001,203 - GEORGETOWN,0203,poll003,split26,,6
pre90113,bs00010,ed003,,,,false,loc002,203 - GEORGETOWN,0203,poll004,split54,sb1,7
|
spatial_boundary¶
The SpatialBoundary
object defines a boundary in space. This boundary is usually defined by one or more discrete, closed polygonal shapes.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_geospatial_feature_id | xs:IDREF |
Required | Single | The spatial boundary defined by a geospatial feature that is external to the VIP feed. | If the element is invalid, then the
implementation is required to ignore the
SpatialBoundary element containing
it. |
1 2 | id,external_geospatial_feature_id
sb1,egf1
|
external_geospatial_feature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_file_id | xs:IDREF |
Required | Single | Links to the external_file containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
file_format | geospatial_format | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
feature_identifier | single-csv-feature-identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
1 2 | id,external_file_id,file_format,shape_identifiers
egf1,ef1,shp,0 7 9
|
feature_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
retention_contest¶
RetentionContest
extends ballot_measure_contest and represents a
contest where a candidate is retained in a position (e.g. a judge).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
candidate_id | xs:IDREF |
Required | Single | Links to the candidate being retained. | If the field is invalid or not present,
the implementation is required to ignore
the RetentionContest element
containing it. |
office_id | xs:IDREF |
Optional | Single | Links to the information about the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
schedule¶
A sub-portion of the schedule. This describes a range of days, along with one or more set of open and close times for those days, as well as the options describing whether or not appointments are necessary or possible.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
hours | single-csv-hours | Optional | Repeats | Blocks of hours in the date range in which the place is open. | If the element is invalid or not present, then the implementation is required to ignore it. |
is_only_by_appointment | xs:boolean |
Optional | Single | If true, the place is only open during the specified time window with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_or_by_appointment | xs:boolean |
Optional | Single | If true, the place is open during the hours specified time window and may also be open with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_subject_to_change | xs:boolean |
Optional | Single | If true, the place should be open during the specified time window, but may be subject to change. People should contact prior to arrival to confirm hours are still accurate. | If the field is invalid or not present, then the implementation is required to ignore it. |
start_date | xs:date |
Optional | Single | The date at which this collection of start and end times and options begin. | If the field is invalid or not present, then the implementation is required to ignore it. |
end_date | xs:date |
Optional | Single | The date at which this collection of start and end times and options end. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,start_time,end_time,is_only_by_appointment,is_or_by_appointment,is_subject_to_change,start_date,end_date,hours_open_id
sch001,07:00:00-06:00,22:00:00-06:00,,true,,2016-10-10,2016-10-12,ho001
sch002,09:00:00-06:00,20:00:00-06:00,true,,,2016-10-13,2016-10-15,ho001
sch003,08:00:00-06:00,14:00:00-06:00,,,true,2016-10-10,2016-10-15,ho002
|
hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
start_time | single-csv-time-with-zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
end_time | single-csv-time-with-zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
time_with_zone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
simple_address_type¶
A SimpleAddressType
represents a structured address.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
structured_line_1 | xs:string |
Required | Single | The address line for a structured address. Should include the street number, street name, and any prefix and suffix. | If no Line1 is provided, the
implementation should ignore the
SimpleAddressType . |
structured_line_2 | xs:string |
Optional | Single | Additional field for an address | If no Line2 is provided, the
implementation should ignore it. |
structured_line_3 | xs:string |
Optional | Single | Additional field for an address | If no Line3 is provided, the
implementation should ignore it. |
structured_city | xs:string |
Required | Single | The City value of a structured address. | If City is not provided, the
implementation should ignore the
SimpleAddressType . |
structured_state | xs:string |
Required | Single | The State value of a structured address. | If State is not provided, the
implementation should ignore the
SimpleAddressType . |
structured_zip | xs:string |
Optional | Single | The ZIP code of a structured address. | If Zip is not provided, the
implementation should ignore the
SimpleAddressType . |
source¶
The Source object represents the organization that is publishing the information. This object is the only required object in the feed file, and only one source object is allowed to be present.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
name | xs:string |
Required | Single | Specifies the name of the organization that is providing the information. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
vip_id | xs:string |
Required | Single | Specifies the ID of the organization. VIP uses FIPS_ codes for this ID. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
date_time | xs:dateTime |
Required | Single | Specifies the date and time of the feed production. The date/time is considered to be in the timezone local to the organization. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
description | xs:string |
Optional | Single | Specifies both the nature of the organization providing the data and what data is in the feed. | If the element is invalid or not present, then the implementation is required to ignore it. |
organization_uri | xs:string |
Optional | Single | Specifies a URI to the home page of the organization publishing the data. | If the field is invalid or not present, then the implementation is required to ignore it. |
feed_contact_information_id | xs:IDREF |
Optional | Single | Reference to the person who will respond to inquiries about the information contained within the file. | If the element is invalid or not present, then the implementation is required to ignore it. |
terms_of_use_uri | xs:anyURI |
Optional | Single | Specifies the website where the Terms of Use for the information in this file can be found. | If the field is invalid or not present, then the implementation is required to ignore it. |
version | xs:string |
Required | Single | Specifies the version of the data | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
1 2 | id,date_time,description,name,organization_uri,terms_of_use_uri,vip_id,version
source01,2016-06-02T10:24:08,SBE is the official source for Virginia data,"State Board of Elections, Commonwealth of Virginia",http://www.sbe.virginia.gov/,http://example.com/terms,51,5.1
|
spatial_boundary¶
The SpatialBoundary
object defines a boundary in space. This boundary is usually defined by one or more discrete, closed polygonal shapes.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_geospatial_feature_id | xs:IDREF |
Required | Single | The spatial boundary defined by a geospatial feature that is external to the VIP feed. | If the element is invalid, then the
implementation is required to ignore the
SpatialBoundary element containing
it. |
1 2 | id,external_geospatial_feature_id
sb1,egf1
|
external_geospatial_feature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_file_id | xs:IDREF |
Required | Single | Links to the external_file containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
file_format | geospatial_format | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
feature_identifier | single-csv-feature-identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
1 2 | id,external_file_id,file_format,shape_identifiers
egf1,ef1,shp,0 7 9
|
feature_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
state¶
The State object includes state-wide election information. The ID attribute is recommended to be the state’s FIPS code, along with the prefix “st”.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_administration_id | xs:IDREF |
Optional | Single | Links to the state’s election administration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Other identifier for the state that relates to another dataset (e.g. `OCD-ID`_). | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Required | Single | Specifiers the name of a state, such as Alabama. | If the field is invalid, then the
implementation is required to ignore the
State element containing it. |
polling_location_ids | xs:IDREFS |
Optional | Single | Specifies a link to the state’s polling locations. If early vote centers or ballot drop locations are state-wide (e.g., anyone in the state can use them), they can be specified here, but you are encouraged to only use the precinct element. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 | id,election_administration_id,external_identifier_type,external_identifier_othertype,external_identifier_value,name,polling_location_ids
st51,ea123,ocd-id,,ocd-division/country:us/state:va,Virginia,
|
street_segment¶
A Street Segment objection represents a portion of a street and the links to the precinct that this geography (i.e., segment) is contained within. The start address house number must be less than the end address house number unless the segment consists of only one address, in which case these values are equal.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_direction | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the entire address. An example is “NE” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
city | xs:string |
Required | Single | The city specifies the city or town of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
includes_all_addresses | xs:boolean |
Optional | Single | Specifies if the segment covers every address on this street. If this is true, then the values of StartHouseNumber and EndHouseNumber should be ignored. The value of OddEvenBoth must be both. | If the field is invalid or not present, then the implementation is required to ignore it. |
includes_all_streets | xs:boolean |
Optional | Single | Specifies if the segment covers every street in this city. If this is true, then the values of OddEvenBoth, StartHouseNumber, EndHouseNumber, StreetName, and Zip should be ignored. | If the field is invalid or not present, then the implementation is required to ignore it. |
odd_even_both | oeb_enum | Optional | Single | Specifies whether the odd side of the street (in terms of house numbers), the even side, or both are in included in the street segment. | If the field is not present or invalid, the implementation is required to ignore the StreetSegment containing it. |
precinct_id | xs:IDREF |
Required | Single | References the precinct that contains the entire street segment. If a precinct has a single-csv-spatial-boundary which also contains the entire street segment, then the precinct assignment from the segment will be preferred over the assignment defined by the spatial boundary. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
start_house_number | xs:integer |
Optional | Single | The house number at which the street segment starts. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, this value must be less than or equal to EndHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the StartHouseNumber is greater than the EndHouseNumber, the implementation should ignore the element containing them. |
end_house_number | xs:integer |
Optional | Single | The house number at which the street segment ends. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, it must be greater than or equal to StartHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the EndHouseNumber is less than the StartHouseNumber, the implementation should ignore the element containing it. |
house_number_prefix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., ‘B’ in ‘B22 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
house_number_suffix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., 1/2 in ‘22 1/2 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
state | xs:string |
Required | Single | Specifies the two-letter state abbreviation of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
street_direction | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the street address (e.g., the “E” in “100 E Capitol St NE”). | If the field is invalid or not present, then the implementation is required to ignore it. |
street_name | xs:string |
Optional | Single | Represents the name of the street for the address. A special wildcard, “*”, denotes every street in the given city/town. It optionally may contain street direction, street suffix or address direction (e.g., both “Capitol” and “E Capitol St NE” are acceptable for the address “100 E Capitol St NE”), however this is not preferred. Preferred is street name alone (e.g. “Capitol”). | If the field is invalid or not present, then the implementation is required to ignore it. |
street_suffix | xs:string |
Optional | Single | Represents the abbreviated, non-directional suffix to the street name. An example is “St” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
unit_number | xs:string |
Optional | Repeats | The apartment/unit number for a street segment. If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
zip | xs:string |
Optional | Single | Specifies the zip code of the address. It may be 5 or 9 digits, and it may include a hyphen (‘-‘). It is required as it helps with geocoding, which is crucial for distributors. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,address_direction,city,includes_all_addresses,includes_all_streets,odd_even_both,precinct_id,start_house_number,end_house_number,house_number_prefix,house_number_suffix,state,street_direction,street_name,street_suffix,unit_number,zip
ss000001,N,Washington,false,false,odd,pre90113,101,199,,,DC,NW,Delaware,St,,20001
ss000002,S,Washington,true,false,both,pre90112,,,,,DC,SE,Wisconsin,Ave,,20002
ss000003,N,Washington,false,false,even,pre90113,100,100,A,1/2,DC,NW,Delaware,St,,20001
|
term¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
term_type | office_term_type | Optional | Single | Specifies the type of office term (see office_term_type for valid values). | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
term_start_date | xs:date |
Optional | Single | Specifies the start date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
term_end_date | xs:date |
Optional | Single | Specifies the end date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
time_with_zone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
voter_service¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | single-csv-contact-information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | voter_service_type | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 | id,description,election_official_person_id,type,other_type,department_id
vs01,A service we provide,per50002,other,overseas-voting,dep01
vs00,Elections notifications,per50002,other,voter-registration,dep02
vs02,Pencil sharpening,per50002,other,office-help,dep03
vs03,Guided hike to polling place,per50002,other,polling-places,dep03
vs04,Bike messenger ballot delivery,per50002,other,absentee-ballots,dep03
|
Enumerations¶
ballot_measure_type¶
A list of the various types of ballot measures. States may have different legal definitions of each type; Wikipedia_ has more details about each type. These values are to help states with multiple types of non-candidate-based contests distinguish between each type; as such, the definitions in this table are simple guidelines. Ultimately it is up to the state or local election official to choose the value which best describes the ballot measure(s) in their jurisdiction.
Tag | Description |
---|---|
ballot-measure | A catch-all for generic types of non-candidate-based contests. |
initiative | These are usually citizen-driven measures to be placed on the ballot. These could include both statutory changes and constitutional amendments. |
referendum | These could include measures to repeal existing acts of legislation, legislative referrals, and legislatively-referred state constitutional amendments. |
other | Anything that does not fall into the above categories. |
candidate_post_election_status¶
Tag | Description |
---|---|
advanced-to-runoff | For contests in which the top N candidates advance to the next round. |
projected-winner | A candidate is expected to win, but official results are not yet complete. |
winner | The candidate has officially won. |
withdrawn | The candidate has withdrawn from the contest. |
candidate_pre_election_status¶
Tag | Description |
---|---|
filed | The candidate has filed for office but not yet been qualified. |
qualified | The candidate has qualified for the contest. |
withdrawn | The candidate has withdrawn from the contest (but may still be on the ballot). |
write-in |
checksum_algorithm¶
Tag | Description |
---|---|
sha-256 | 256-bit cryptographic hash algorithm of the SHA-2 family |
sha-512 | 512-bit cryptographic hash algorithm of the SHA-2 family |
district_type¶
Enumeration describing the set of possible jurisdiction and district types. Please use the enumeration value which most accurately reflects the type of district or jurisdiction in your state or county. For example, “town” and “township” may mean different things – or not be defined at all – in your state, so please use the definition which best matches your local meaning.
Tag | Description |
---|---|
borough | A borough |
city | A city. |
city-council | A specific seat/jurisdiction for a city, town, or village council. |
congressional | A United States congressional district. |
county | A county. |
county-council | A county council district, either in its entirety or for a specific seat. |
judicial | A judicial district. |
municipality | A civil division which is not a town, city, village, or county. |
national | The United States. |
school | A school district. |
special | A `special-purpose district`_ that exist separate from general-purpose districts. |
state | A state, district, commonwealth, or U.S. territory. |
state-house | The lower house of a state legislature. |
state-senate | The upper house of a state legislature. |
town | A town_. |
township | A township, which may be different than a town. See the `Wikipedia article`_. |
utility | A non-water public or municipal utility district. |
village | A village district. |
ward | A ward. |
water | A water district. |
other | Any district not described above. Use the OtherType field to describe it. |
geospatial_format¶
Geospatial file formats that are supported by the VIP specification.
Tag | Description |
---|---|
shp | ESRI Shapefile (reference) |
identifier_type¶
Tag | Description |
---|---|
fips | Federal Information Processing Standards codes for states_, counties_, and cities_. |
local-level | An identifier generated or used by local governments or organizations. |
national-level | An identifier generated or used by national organizations. |
ocd-id | An `Open Civic Data Division Identifier`_. |
state-level | An identifier generated or used by state governments or organizations. |
other | Any identifier which doesn’t fall into any of the above categories. |
oeb_enum¶
Tag | Description |
---|---|
both | Both even and odd addresses within the range. |
even | Only even-numbered addresses within the range. |
odd | Only odd-numbered addresses within the range. |
office_term_type¶
Tag | Description |
---|---|
full-term | This election is for an office for which the existing term has been completed. |
unexpired-term | This election is for an office for which the original term is not yet complete. |
vote_variation¶
Note that the descriptions below describe what the enumeration names stand for in the context of the VIP spec, rather than provide general definitions of the election terms that the names correspond to. For example, even though there are majority voting methods that are not “1-of-m” (e.g. ranked choice voting), we constrain “majority” to 1-of-m. We do this to eliminate any source of ambiguity when a single enumeration value needs to be assigned to a contest.
Tag | Description |
---|---|
1-of-m | A method where each voter can select up to one option. |
approval | `Approval voting`_, where each voter can select as many options as desired. |
borda | `Borda count`_, where each voter can rank the options, and the rankings are assigned point values. |
cumulative | `Cumulative voting`_, where each voter can distribute their vote to up to N options. |
majority | A 1-of-m method where the winner needs more than 50% of the vote to be elected. |
n-of-m | A method where each voter can select up to N options. |
plurality | A 1-of-m method where the option with the most votes is elected, regardless of whether the option has more than 50% of the vote. |
proportional | A `proportional representation`_ method (other than STV), which is any system that elects winners in proportion to the total vote. |
range | `Range voting`_, where each voter can select a score for each option. |
rcv | `Ranked choice voting`_ (RCV), where each voter can rank the options, and the ballots are counted in rounds. Also known as instant-runoff voting (IRV) and the single transferable vote (STV). |
super-majority | A 1-of-m method where the winner needs more than some predetermined fraction of the vote to be elected, where the fraction is more than 50% (e.g. three-fifths or two-thirds). |
other | Used when the vote variation type is not included in this enumeration. |
voter_service_type¶
Tag | Description |
---|---|
absentee-ballots | This department handles the dispatch, tracking, and return of absentee ballots. |
overseas-voting | The department for overseas, military, and other outside-the-U.S. voters. |
polling-places | This deparment handles the selection and management of polling places. |
voter-registration | The deparment that manages voter registration. |
other | Any other service not covered by the above descriptions. |
Elements (Separate Pages)¶
ballot_measure_contest¶
The BallotMeasureContest provides information about a ballot measure before the voters, including summary statements on each side. Extends contest_base.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
con_statement | xs:string |
Optional | Single | Specifies a statement in opposition to the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
effect_of_abstain | xs:string |
Optional | Single | Specifies what effect abstaining (i.e. not voting) on this proposition will have (i.e. whether abstaining is considered a vote against it). | If the element is invalid or not present, then the implementation is required to ignore it. |
full_text | xs:string |
Optional | Single | Specifies the full text of the referendum as it appears on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
info_uri | xs:anyURI |
Optional | Single | Specifies a URI that links to additional information about the referendum. | If the field is invalid or not present, then the implementation is required to ignore it. |
passage_threshold | xs:string |
Optional | Single | Specifies the threshold of votes that the referendum needs in order to pass. The default is a simple majority (i.e. 50% plus one vote). Other common thresholds are “three-fifths” and “two-thirds”. If there are `competing initiatives`_, information about their effect on the passage of the BallotMeasureContest would go here. | If the element is invalid or not present, then the implementation is required to ignore it. |
pro_statement | xs:string |
Optional | Single | Specifies a statement in favor of the referendum. It does not necessarily appear on the ballot. | If the element is invalid or not present, then the implementation is required to ignore it. |
summary_text | xs:string |
Optional | Single | Specifies a short summary of the referendum that is on the ballot, below the title, but above the text. | If the element is invalid or not present, then the implementation is required to ignore it. |
type | xs:string |
Optional | Single | Specifies the particular type of ballot measure. Must be one of the valid ballot_measure_type options. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | Allows for cataloging a new ballot_measure_type option, when Type is specified as “other.” | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 | id,abbreviation,ballot_selection_ids,ballot_sub_title,ballot_title,elecoral_district_id,electorate_specification,external_identifier_type,external_identifier_othertype,external_identifier_value,has_rotation,name,sequence_order,vote_variation,other_vote_variation,con_statement,effect_of_abstain,full_text,info_uri,passage_threshold,pro_statement,summary_text,type,other_type
bmc0001,HB2,bs001 bs002 bs003,Raising levy for School Bond,School Bond Issue,ed001,all registered voters,,54,false,School Bond,42,majority,,This is no good.,No effect,A measure to do raise funds for etc etc,www.ballotmeasure.com,two-thirds,Everything will be great.,It’s a referendum about school funding,referendum,
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends ballot_selection_base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_measure_selection¶
Represents the possible selection (e.g. yes/no, recall/do not recall, et al) for a ballot_measure_contest that would appear on the ballot. BallotMeasureSelection extends ballot_selection_base.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
selection | xs:string |
Required | Single | Selection text for a ballot_measure_contest | If the element is invalid or not present, the implementation is required to ignore the BallotMeasureSelection containing it. |
1 2 3 | id,sequence_order,selection
bms001,1,Proposition A
bms002,2,Proposition B
|
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_style¶
A container for the contests/measures on the ballot.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
image_uri | xs:anyURI |
Optional | Single | Specifies a URI that returns an image of the sample ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
ordered_contests_ids | xs:IDREFS |
Optional | Single | Reference to a set of ordered_contest | If the field is invalid or not present, then the implementation is required to ignore it. |
party_ids | xs:IDREFS |
Optional | Single | Reference to a set of :ref:`multi-csv-party`s. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,image_uri,ordered_contest_ids,party_ids
bs00010,http://i.giphy.com/26BoCh3PgT8ai45ji.gif,oc2025,par02
bs00011,http://i.giphy.com/3oEjHYDWEICgEpAOjK.gif,oc3000 oc2025,par01
|
candidate¶
The Candidate object represents a candidate in a contest. If a candidate is running in multiple contests, each contest must have its own Candidate object. Candidate objects may not be reused between Contests.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ballot_name | xs:string |
Required | Single | The candidate’s name as it will be displayed on the official ballot (e.g. “Ken T. Cuccinelli II”). | If the element is invalid, then the
implementation is required to ignore the
Candidate element containing it. |
contact_information | xs:string |
Optional | Single | Contact and physical address information for this Candidate and/or their campaign (see contact_information). | If the element is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Another identifier for a candidate that links to another source of information (e.g. a campaign committee ID that links to a campaign finance system). | If the element is invalid or not present, then the implementation is required to ignore it. |
file_date | xs:date |
Optional | Single | Date when the candidate filed for the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_incumbent | xs:boolean |
Optional | Single | Indicates whether the candidate is the incumbent for the office associated with the contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_top_ticket | xs:boolean |
Optional | Single | Indicates whether the candidate is the top of a ticket that includes multiple candidates. | If the field is invalid or not present, then the implementation is required to ignore it. |
party_id | xs:IDREF |
Optional | Single | Reference to a party element with additional information about the candidate’s affiliated party. This is the party affiliation that is intended to be presented as part of ballot information. | If the field is invalid or not present, then the implementation is required to ignore it. |
person_id | xs:IDREF |
Optional | Single | Reference to a person element with additional information about the candidate. | If the field is invalid or not present, then the implementation is required to ignore it. |
post_election_status | candidate_post_election_status | Optional | Single | Final status of the candidate (e.g. winner, withdrawn, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
pre_election_status | candidate_pre_election_status | Optional | Single | Registration status of the candidate (e.g. filed, qualified, etc…). | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,ballot_name,external_identifier_type,external_identifier_othertype,external_identifier_value,file_date,is_incumbent,is_top_ticket,party_id,person_id,post_election_status,pre_election_status
can001,Jude Fawley,,,,2016-12-01,true,false,par01,per50001,,filed
can002,Arabella Donn,,,,2016-12-01,false,false,par02,per50002,,qualified
can003,John Coltrane,,,,2016-09-23,false,false,par02,per50003,,qualified
can004,Miles Davis,,,,2016-05-26,false,false,par01,per50004,,qualified
|
candidate_contest¶
CandidateContest extends contest_base and represents a contest among candidates.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
number_elected | xs:integer |
Optional | Single | Number of candidates that are elected in the contest (i.e. “N” of N-of-M). | If the field is invalid or not present, then the implementation is required to ignore it. |
office_ids | xs:IDREFS |
Optional | Single | References a set of office elements, if available, which give additional information about the offices. Note: the order of the office IDs must be in the same order as the candidates listed in BallotSelectionIds. E.g., if the various BallotSelectionIds reference candiate_selection elements which reference the candidate for President first and Vice-President second, the OfficeIds should reference the office of President first and the office of Vice-President second. | If the field is invalid or not present, then the implementation is required to ignore it. |
primary_party_ids | xs:IDREFS |
Optional | Single | References party elements, if the contest is related to a particular party. | If the field is invalid or not present, then the implementation is required to ignore it. |
votes_allowed | xs:integer |
Optional | Single | Maximum number of votes/write-ins per voter in this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,abbreviation,ballot_selection_ids,ballot_sub_title,ballot_title,electoral_district_id,electorate_specification,external_identifier_type,external_identifier_othertype,external_identifier_value,has_rotation,name,sequence_order,vote_variation,other_vote_variation,number_elected,office_ids,primary_party_ids,votes_allowed
cancon001,SE-1,bs001 bs002,,Governor of Virginia,ed001,all registered voters,fips,,49,true,Governor,1,,,1,off001,par01,1
cancon002,SE-2,bs003 bs004,,Lieutenant Governor of Virginia,ed001,all registered voters,fips,,49,true,Lt Governor,2,,,1,off002,par01,1
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends ballot_selection_base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
candiate_selection¶
CandidateSelection extends ballot_selection_base and represents a ballot selection for a candidate contest.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
candidate_ids | xs:IDREFS |
Optional | Single | References a set of candidate elements. The number of candidates that can be references is unbounded in cases where the ballot selection is for a ticket (e.g. “President/Vice President”, “Governor/Lt Governor”). | If the field is invalid or not present, then the implementation is required to ignore it. |
endorsement_party_ids | xs:IDREFS |
Optional | Single | References a set of party elements, which signifies one or more endorsing parties for the candidate(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
is_write_in | xs:boolean |
Optional | Single | Signifies if the particular ballot selection allows for write-in candidates. If true, one or more write-in candidates are allowed for this contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,sequence_order,candidate_ids,endorsement_party_ids,is_write_in
cs001,3,can004,par01,false
cs002,2,can001 can002,par03 par02,false
cs003,1,can003,par02 par03,true
|
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
election¶
The Election object represents an Election Day, which usually consists of many individual contests and/or referenda. A feed must contain exactly one Election object. All relationships in the feed (e.g., street segment to precinct to polling location) are assumed to relate only to the Election specified by this object. It is permissible, and recommended, to combine unrelated contests (e.g., a special election and a general election) that occur on the same day into one feed with one Election object.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
date | xs:date |
Required | Single | Specifies when the election is being held. The Date is considered to be in the timezone local to the state holding the election. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
election_type | xs:string |
Optional | Single | Specifies the highest controlling authority for election (e.g., federal, state, county, city, town, etc.) | If the element is invalid or not present, then the implementation is required to ignore it. |
state_id | xs:IDREF |
Required | Single | Specifies a link to the State element where the election is being held. | If the field is invalid, then the
implementation is required to ignore the
Election element containing it. |
is_statewide | xs:boolean |
Optional | Single | Indicates whether the election is statewide. | If the field is not present or invalid, the implementation is required to default to “yes”. |
name | xs:string |
Optional | Single | The name for the election (NB: while optional, this element is highly recommended). | If the element is invalid or not present, then the implementation is required to ignore it. |
registration_info | xs:string |
Optional | Single | Specifies information about registration for this election either as text or a URI. | If the element is invalid or not present, then the implementation is required to ignore it. |
absentee_ballot_info | xs:string |
Optional | Single | Specifies information about requesting absentee ballots either as text or a URI | If the element is invalid or not present, then the implementation is required to ignore it. |
results_uri | xs:anyURI |
Optional | Single | Contains a URI where results for the election may be found | If the field is invalid or not present, then the implementation is required to ignore it. |
polling_hours | xs:string |
Optional | Single | Contains the hours (in local time) that Election Day polling locations are open. If polling hours differ in specific polling locations, alternative hours may be specified in the polling_location object (NB: this element is deprecated in favor of the more structured :ref:`multi-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_ids | xs:IDREF |
Optional | Single | References the hours_open element, which lists the hours of operation for polling locations. | If the field is invalid or not present, then the implementation is required to ignore it. |
has_election_day_registration | xs:boolean |
Optional | Single | Specifies if a voter can register on the same day of the election (i.e., the last day of the election). Valid items are “yes” and “no”. | If the field is invalid or not present, then the implementation is required to ignore it. |
registration_deadline | xs:date |
Optional | Single | Specifies the last day to register for the election with the possible exception of Election Day registration. | If the field is invalid or not present, then the implementation is required to ignore it. |
absentee_request_deadline | xs:date |
Optional | Single | Specifies the last day to request an absentee ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 | id,date,name,election_type,state_id,is_statewide,registration_info,absentee_ballot_info,results_uri,polling_hours,has_election_day_registration,registration_deadline,absentee_request_deadline,hours_open_id
e001,10-08-2016,Best Hot Dog,State,st51,true,www.registrationinfo.com,You can vote absentee,http://hotdogcontest.gov/results,Noon to 3p.m.,true,10/08/2016,,ho002
|
election_administration¶
The Election Administration represents an institution for serving a locality’s (or state’s) election functions.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
absentee_uri | xs:anyURI |
Optional | Single | Specifies the web address for information on absentee voting. | If the field is invalid or not present, then the implementation is required to ignore it. |
am_i_registered_uri | xs:anyURI |
Optional | Single | Specifies the web address for information on whether an individual is registered. | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_tracking_uri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a ballot cast by mail | If the field is invalid or not present, then the implementation is required to ignore it. |
ballot_tracking_provisional_uri | xs:anyURI |
Optional | Single | Specifies the web address for tracking information for a provisional ballot. To support EAC guidelines for “Processing Provisional Ballots” (https://www.eac.gov/research-and-data/provisional-voting/) | If the field is invalid or not present, then the implementation is required to ignore it. |
department | department | Required | Repeats | Describes the administrative body for a particular voter service. | There must be at least one valid Department in each ElectionAdministration element. If no valid Department objects are present, the implementation is required to ignore the ElectionAdministration object that contains it/them. |
election_notice | election_notice | Optional | Single | A place for election administrators to post last minute and emergency notifications pertaining to the election. | If the element is invalid or not present, then the implementation is required to ignore it. |
elections_uri | xs:anyURI |
Optional | Single | Specifies web address the administration’s website. | If the field is invalid or not present, then the implementation is required to ignore it. |
registration_uri | xs:anyURI |
Optional | Single | Specifies web address for information on registering to vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
rules_uri | xs:anyURI |
Optional | Single | Specifies a URI for the election rules and laws (if any) for the jurisdiction of the administration. | If the field is invalid or not present, then the implementation is required to ignore it. |
what_is_on_my_ballot | xs:anyURI |
Optional | Single | Specifies web address for information on what is on an individual’s ballot. | If the field is invalid or not present, then the implementation is required to ignore it. |
where_do_i_vote_uri | xs:anyURI |
Optional | Single | The Specifies web address for information on where an individual votes based on their address. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,absentee_uri,am_i_registered_uri,ballot_tracking_uri,ballot_tracking_provisional_uri,election_notice_text,election_notice_uri,elections_uri,registration_uri,rules_uri,what_is_on_my_ballot_uri,where_do_i_vote_uri
ea123,https://example.com/absentee,https://example.com/am-i-registered,https://www.vote.virginia.gov/,https://www.vote.virginia.gov/,This is an emergency notification for this election.,https://www.yadayada.gov,https://example.com/elections,https://example.com/registration,https://example.com/rules,https://example.com/what-is-on-my-ballot,https://example.com/where-do-i-vote
ea345,https://example.com/absentee2,https://example.com/am-i-registered2,https://example.com/elections2,https://example.com/registration2,,,https://example.com/rules2,https://example.com/what-is-on-my-ballot2,https://example.com/where-do-i-vote2
ea625,https://example.com/absentee3,https://example.com/am-i-registered3,https://example.com/elections3,https://example.com/registration3,This is an emergency notification for this election.,,https://example.com/rules3,https://example.com/what-is-on-my-ballot3,https://example.com/where-do-i-vote3
|
department¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | contact_information | Optional | Single | Contact and physical address information for the election administration body (see contact_information). | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The individual to contact at the election administration office. The specified person should be the election official. | If the field is invalid or not present, then the implementation is required to ignore it. |
voter_service | multi-csv-voter-service | Optional | Repeats | The types of services and appropriate contact individual available to voters. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,election_official_person_id,election_administration_id
dep01,per50002,ea123
dep02,per50002,ea345
dep03,per50002,ea625
dep04,per50002,ea625
|
voter_service¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | contact_information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | voter_service_type | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 | id,description,election_official_person_id,type,other_type,department_id
vs01,A service we provide,per50002,other,overseas-voting,dep01
vs00,Elections notifications,per50002,other,voter-registration,dep02
vs02,Pencil sharpening,per50002,other,office-help,dep03
vs03,Guided hike to polling place,per50002,other,polling-places,dep03
vs04,Bike messenger ballot delivery,per50002,other,absentee-ballots,dep03
|
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`multi-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | lat_long | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
election_notice¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_notice_text | xs:string |
Required | Single | The last minute or emergency notification text should be placed here. | If the element is invalid, then the
implementation is required to ignore the
ElectionNotice element containing
it. |
election_notice_uri | xs:string |
Optional | Single | Optional URL for additional information related to the last minute or emergency notification. | If the field is invalid or not present, then the implementation is required to ignore it. |
voter_service¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information | contact_information | Optional | Single | The contact for a particular voter service. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | Long description of the services available. | If the element is invalid or not present, then the implementation is required to ignore it. |
election_official_person_id | xs:IDREF |
Optional | Single | The authority for a particular voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | voter_service_type | Optional | Single | The type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | If Type is “other”, OtherType allows for cataloging another type of voter service. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 6 | id,description,election_official_person_id,type,other_type,department_id
vs01,A service we provide,per50002,other,overseas-voting,dep01
vs00,Elections notifications,per50002,other,voter-registration,dep02
vs02,Pencil sharpening,per50002,other,office-help,dep03
vs03,Guided hike to polling place,per50002,other,polling-places,dep03
vs04,Bike messenger ballot delivery,per50002,other,absentee-ballots,dep03
|
electoral_district¶
The ElectoralDistrict
object represents the geographic area in which contests are held. Examples
of ElectoralDistrict
include: “the state of Maryland”, “Virginia’s 5th Congressional District”,
or “Union School District”. The geographic area that comprises a ElectoralDistrict
is defined by
which precincts link to the ElectoralDistrict
.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_identifiers | external_identifiers | Optional | Single | Other identifiers that link to external datasets (e.g. `OCD-IDs`_) | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Required | Single | Specifies the electoral area’s name. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
number | xs:integer |
Optional | Single | Specifies the district number of the district (e.g. 34, in the case of the 34th State Senate District). If a number is not applicable, instead of leaving the field blank, leave this field out of the object; empty strings are not valid for xs:integer fields. | If the field is invalid or not present, then the implementation is required to ignore it. |
type | district_type | Required | Single | Specifies the type of electoral area. | If the field is invalid or not present,
then the implementation is required to
ignore the ElectoralDistrict object
containing it. |
other_type | xs:string |
Optional | Single | Allows for cataloging a new
district_type option
when Type is specified as “other”. |
If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,external_identifier_type,external_identifier_othertype,external_identifier_value,name,number,type,other_type
ed001,ocd-id,,ocd-division/country:us/state:ny/borough:brooklyn,Brooklyn,1,borough,
ed002,other,community-board,4,CB 4,2,other,community-board
|
external_file¶
The ExternalFile
object holds a reference to a file external to the feed itself.
External files are packaged along with the VIP feed into a single, archived file.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
file_uri | xs:anyURI |
Required | Single | The URI of the external file. | If the field is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
checksum_id | xs:IDREF |
Required | Single | The cryptographic checksum of the referenced external file. | If the element is invalid, then the
implementation is required to ignore the
ExternalFile element containing it. |
1 2 | id,file_uri,checksum_id
ef1,precinct_shapes.zip,ch1
|
checksum¶
The Checksum
object contains information about a cryptographic checksum, including
the raw checksum value and the cryptographic hash algorithm used to compute it.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
algorithm | checksum_algorithm | Required | Single | The cryptographic hash algorithm used to compute the checksum value. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
value | xs:string |
Required | Single | The raw cryptographic checksum value encoded as a non-delimited, lowercase hexadecimal string. | If the field is invalid, then the
implementation is required to ignore the
Checksum element containing it. |
1 2 | id,algorithm,value
ch1,sha-256,65b634c5037f8a344616020d8060d233daa37b0f032a71d0d15ad7a5d3afa68e
|
external_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
type | identifier_type |
Required | Single | Specifies the type of identifier. Must be one of the valid types as defined by identifier_type. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
other_type | xs:string |
Optional | Single | Allows for cataloging an
ExternalIdentifier type that falls
outside the options listed in
identifier_type.
Type should be set to “other” when
using this field. |
If the field is invalid or not present, then the implementation is required to ignore it. |
value | xs:string |
Required | Single | Specifies the identifier. | If the field is invalid or not present,
the implementation is required to ignore
the ElectionIdentifier containing
it. |
external_identifiers¶
The ExternalIdentifiers
element allows VIP data to connect with external datasets (e.g.
candidates with campaign finance datasets, electoral geographies with OCD-IDs that allow for
greater connectivity with additional datasets, etc…). Examples for ExternalIdentifiers
can be
found on the objects that support them:
- candidate
- Any element that extends contest_base
- electoral_district
- locality
- office
- party
- precinct
- state
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_identifier | external_identifier | Required | Repeats | Defines the identifier and the type of identifier it is (see `ExternalIdentifier`_ for complete information). | At least one valid `ExternalIdentifier`_
must be present for
ExternalIdentifiers to be valid. If
no valid `ExternalIdentifier`_ is
present, the implementation is required
to ignore the ExternalIdentifiers
element. |
hours_open¶
A structured way of describing the days and hours that a place such as a office or polling_location is open, or that an event such as an election is happening. The range of days indicated by the StartDate and EndDate in each Schedule element should not overlap with peer Schedule elements. For example, it is invalid to specify a schedule from 10/01/2016 to 10/31/2016 and also specify a schedule from 10/10/2016 to 10/11/2016 within the same HoursOpen element.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
schedule | schedule | Required | Repeats | Defines a block of days and hours that a place will be open. | At least one valid Schedule must be
present for HoursOpen to be valid.
If no valid Schedule is present, the
implementation is required to ignore the
HoursOpen element. |
schedule¶
A sub-portion of the schedule. This describes a range of days, along with one or more set of open and close times for those days, as well as the options describing whether or not appointments are necessary or possible.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
hours | hours | Optional | Repeats | Blocks of hours in the date range in which the place is open. | If the element is invalid or not present, then the implementation is required to ignore it. |
is_only_by_appointment | xs:boolean |
Optional | Single | If true, the place is only open during the specified time window with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_or_by_appointment | xs:boolean |
Optional | Single | If true, the place is open during the hours specified time window and may also be open with an appointment. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_subject_to_change | xs:boolean |
Optional | Single | If true, the place should be open during the specified time window, but may be subject to change. People should contact prior to arrival to confirm hours are still accurate. | If the field is invalid or not present, then the implementation is required to ignore it. |
start_date | xs:date |
Optional | Single | The date at which this collection of start and end times and options begin. | If the field is invalid or not present, then the implementation is required to ignore it. |
end_date | xs:date |
Optional | Single | The date at which this collection of start and end times and options end. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,start_time,end_time,is_only_by_appointment,is_or_by_appointment,is_subject_to_change,start_date,end_date,hours_open_id
sch001,07:00:00-06:00,22:00:00-06:00,,true,,2016-10-10,2016-10-12,ho001
sch002,09:00:00-06:00,20:00:00-06:00,true,,,2016-10-13,2016-10-15,ho001
sch003,08:00:00-06:00,14:00:00-06:00,,,true,2016-10-10,2016-10-15,ho002
|
hours¶
The open and close time for this place. All times must be fully specified, including a timezone offset from UTC.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
start_time | time_with_zone | Optional | Single | The time at which this place opens. | If the element is invalid or not present, then the implementation is required to ignore it. |
end_time | time_with_zone | Optional | Single | The time at which this place closes. | If the element is invalid or not present, then the implementation is required to ignore it. |
time_with_zone¶
A string pattern restricting the value to a time with an included offset from UTC. The pattern is
(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]|(24:00:00))(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <HoursOpen id="hours0001">
<Schedule>
<Hours>
<StartTime>06:00:00-05:00</StartTime>
<EndTime>12:00:00-05:00</EndTime>
</Hours>
<Hours>
<StartTime>13:00:00-05:00</StartTime>
<EndTime>19:00:00-05:00</EndTime>
</Hours>
<StartDate>2013-11-05</StartDate>
<EndDate>2013-11-05</EndDate>
</Schedule>
</HoursOpen>
|
internationalized_text¶
InternationalizedText
allows for support of multiple languages for a string.
InternationalizedText
has an optional attribute label
, which allows the feed to refer
back to the original label for the information (e.g. if the contact information came from a
CSV, label
may refer to a row ID). Examples of InternationalizedText
can be seen in:
* Any element that extends contest_base
* Any element that extends ballot_selection_base
* candidate
* contact_information
* election
* election_administration
* office
* party
* person
* polling_location
* source
NOTE: Internationalized Text is not currently supported for CSV submissions.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
text | xs:string |
Required | Repeats | Contains the translations of a particular string of text. | At least one valid Text must be
present for InternationalizedText to
be valid. If no valid Text is
present, the implementation is required
to ignore the InternationalizedText
element. |
language_string¶
LanguageString
extends xs:string and can contain text from any language. LanguageString
has one required attribute, language
, that must contain the 2-character language code for the
type of language LanguageString
contains.
1 2 3 4 | <BallotTitle>
<Text language="en">Retention of Supreme Court Justice</Text>
<Text language="es">La retención de juez de la Corte Suprema</Text>
</BallotTitle>
|
locality¶
The Locality object represents the jurisdiction below the state (e.g. county).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_administration_id | xs:IDREF |
Optional | Single | Links to the locality’s election_administration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Another identifier for a locality that links to another dataset (e.g. `OCD-ID`_) | If the element is invalid or not present, then the implementation is required to ignore it. |
is_mail_only | xs:boolean |
Optional | Single | Determines if the locality runs mail-only elections. If this is true, then all precincts a part of the locality will also run mail-only elections. Drop boxes may be used in addition to this flag using a polling location record configured as a Drop Box. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
name | xs:string |
Required | Single | Specifies the name of a locality. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
polling_location_ids | xs:IDREFS |
Optional | Single | Specifies a link to a set of the locality’s :ref:`polling locations <multi-csv-polling-location>`s. If early vote centers or ballot drop locations are locality-wide, they should be specified here. | If the field is invalid or not present, the implementation is required to ignore it. However, the implementation should still check to see if there are any polling locations associated with this locality’s state. |
state_id | xs:IDREF |
Required | Single | References the locality’s state. | If the field is invalid, then the
implementation is required to ignore the
Locality element containing it. |
type | district_type | Optional | Single | Defines the kind of locality (e.g. county, town, et al.), which is one of the various DistrictType enumerations. | If the field is invalid or not present, then the implementation is required to ignore it. |
other_type | xs:string |
Optional | Single | Allows for defining a type of locality that falls outside the options listed in DistrictType. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,election_administration_id,external_identifier_type,external_identifier_othertype,external_identifier_value,is_mail_only,name,polling_location_ids,state_id,type,other_type
loc001,ea123,ocd-id,,ocd-division/country:us/state:co/county:denver,true,Locality #1,poll001 poll002,st51,city,
loc002,ea345,,,,,Locality #2,,st51,other,unique type
|
office¶
Office
represents the office associated with a contest or district (e.g. Alderman, Mayor,
School Board, et al).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information_id | xs:IDREF |
Optional | Repeats | Links to the contact_information element associated with the office. | If the element is invalid or not present, then the implementation is required to ignore it. |
description | xs:string |
Optional | Single | A brief description of the office and its purpose. | If the element is invalid or not present, then the implementation is required to ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | Links to the electoral_district element associated with the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
external_identifiers | xs:IDREF |
Optional | Single | Other identifiers that link this office to other related datasets (e.g. campaign finance systems, OCD IDs, et al.). | If the element is invalid or not present, then the implementation is required to ignore it. |
filing_deadline | xs:date |
Optional | Single | Specifies the date and time when a candidate must have filed for the contest for the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_partisan | xs:boolean |
Optional | Single | Indicates whether the office is partisan. | If the field is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Required | Single | The name of the office. | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
office_holder_person_ids | xs:IDREFS |
Optional | Single | Links to the person element(s) that hold additional information about the current office holder(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
term | term | Optional | Single | Defines the term the office can be held. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,electoral_district_id,external_identifier_type,external_identifier_othertype,external_identifier_value,filing_deadline,is_partisan,name,office_holder_person_ids,term_type,term_start_date,term_end_date
off001,ed001,,,,,true,Deputy Chief of Staff,per50003,full-term,2002-01-21,
off002,ed001,,,,,true,Deputy Deputy Chief of Staff,per50001,unexpired-term,2002-01-21,
off003,ed001,,,,,false,General Secretary of Secretaries,per50004,full-term,2002-01-21,
|
term¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
term_type | office_term_type | Optional | Single | Specifies the type of office term (see office_term_type for valid values). | If the field is invalid or not present,
the implementation is required to ignore
the Office element containing it. |
term_start_date | xs:date |
Optional | Single | Specifies the start date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
term_end_date | xs:date |
Optional | Single | Specifies the end date for the current term of the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`multi-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | lat_long | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
ordered_contest¶
OrderedContest
encapsulates links to the information that comprises a contest and potential
ballot selections. OrderedContest
elements can be collected within a
ballot_style to accurate depict exactly what will show up on a particular
ballot in the proper order.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contest_id | xs:IDREF |
Required | Single | Links to elements that extend contest_base. | If the field is invalid or not present, the
implementation is required to ignore the
OrderedContest element containing it. |
ordered_ballot_selection_ids | IDREFS |
Optional | Single | Links to elements that extend ballot_selection_base. | If the field is invalid or not present, the
implementation is required to ignore it. If an
OrderedBallotSelectionIds element is not
present, the presumed order of the selection
will be the order of
ballot_selection_base-extended
elements referenced by the underlying
contest_base-extended
elements. |
1 2 3 | id,contest_id,ordered_ballot_selection_ids
oc2025,con001,bs001 bs002 bs003
oc3000,con002,bs001
|
party¶
This element describes a political party and the metadata associated with them. These can also include “dummy” parties to indicate a type of contest (e.g., a Voter Nominated candidate_contest can use the PrimaryPartyIds field and a dummy Party object to indicate that the contest is a “Top-Two” primary).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the party name. | If the field is invalid or not present, then the implementation is required to ignore it. |
color | html_color_string | Optional | Single | The preferred display color for the party, for use in maps and other displays. | If the element is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Other identifiers that link this party to other related data sets (e.g. a campaign finance system, etc). | If the element is invalid or not present, then the implementation is required to ignore it. |
is_write_in | xs:boolean |
Optional | Single | Signals if this political party is one that is officially recognized by a local, state, or federal organization, or is a “write-in” in jurisdictions which allow candidates to free-form enter their political affiliation. If this field is not present then it is assumed to be false. | If the field is invalid or not present, then the implementation is required to ignore it. |
leader_person_ids | xs:IDREFS |
Optional | Single | A reference of person elements which are leaders of the Party. | If the field is invalid or not present, then the implementation is required to ignore it. |
logo_uri | xs:anyURI |
Optional | Single | Web address of a logo to use in displays. | If the field is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the party. | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,abbreviation,color,external_identifier_type,external_identifier_othertype,external_identifier_value,is_write_in,leader_person_ids,logo_uri,name
par01,REP,ff0000,,,,true,,http://example.com/elephant.png,Republican
par02,DEM,0000ff,,,,false,per01,http://example.com/donkey.png,Democrat
par03,GRN,efefef,,,,,,http://example.com/tree.png,Green
par04,WFP,ee99aa,,,,,,http://example.com/worker.png,Working Families Party
|
html_color_string¶
A restricted string pattern for a six-character hex code representing an HTML color string. The pattern is:
[0-9a-f]{6}
party_contest¶
An extension of contest_base which describes a contest in which the possible ballot selections are of type party_selection. These could include contests in which straight-party selections are allowed, or party-list contests (although these are more common outside of the United States).
1 2 | id,abbreviation,ballot_selection_ids,ballot_sub_title,ballot_title,electoral_district_id,electorate_specification,external_identifier_type,external_identifier_othertype,external_identifier_value,has_rotation,name,sequence_order,vote_variation,other_vote_variation
pcon001,PC1071,bs001 bs002,,Party Election,ed001,all registered voters,,,,false,Straight Party Vote,3,,
|
contest_base¶
A base model for all Contest types: ballot_measure_contest, candidate_contest, party_contest, and retention_contest (NB: the latter because it extends ballot_measure_contest).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
abbreviation | xs:string |
Optional | Single | An abbreviation for the contest. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_selection_ids | xs:IDREFS |
Optional | Single | References a set of BallotSelections, which could be of any selection type that extends ballot_selection_base. | If the field is invalid or not present, then the implementation should ignore it. |
ballot_sub_title | xs:string |
Optional | Single | Subtitle of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
ballot_title | xs:string |
Optional | Single | Title of the contest as it appears on the ballot. | If the element is invalid or not present, then the implementation should ignore it. |
electoral_district_id | xs:IDREF |
Required | Single | References an electoral_district element that represents the geographical scope of the contest. | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
electorate_specification | xs:string |
Optional | Single | Specifies any changes to the eligible electorate for this contest past the usual, “all registered voters” electorate. This subtag will most often be used for primaries and local elections. In primaries, voters may have to be registered as a specific party to vote, or there may be special rules for which ballot a voter can pull. In some local elections, non-citizens can vote. | If the element is invalid or not present, then the implementation should ignore it. |
external_identifiers | xs:string |
Optional | Single | Other identifiers for a contest that links to another source of information. | If the element is invalid or not present, then the implementation should ignore it. |
has_rotation | xs:boolean |
Optional | Single | Indicates whether the selections in the contest are rotated. | If the field is invalid or not present, then the implementation should ignore it. |
name | xs:string |
Required | Single | Name of the contest, not necessarily how it appears on the ballot (NB: BallotTitle should be used for this purpose). | If the field is invalid, then the
implementation is required to ignore the
ContestBase element containing it. |
sequence_order | xs:integer |
Optional | Single | Order in which the contests are listed on the ballot. This is the default ordering, and can be overrides by data in a ballot_style element. | If the field is invalid or not present, then the implementation should ignore it. |
vote_variation | vote_variation | Optional | Single | Vote variation associated with the contest (e.g. n-of-m, majority, et al). | If the field is invalid or not present, then the implementation should ignore it. |
other_vote_variation | other_vote_variation |
Optional | Single | If “other” is selected as the VoteVariation, the name of the variation can be specified here. | If the field is invalid or not present, then the implementation should ignore it. |
party_selection¶
This element extends ballot_selection_base to support contests in which the selections can be groups of one or more parties.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
party_ids | xs:IDREFS |
Required | Single | One or more party IDs which collectively represent a ballot selection. | If one or more parties referenced are invalid or not present, the implementation is required to ignore the PartySelection containing it. |
1 2 3 4 | id,sequence_order,party_ids
ps001,1,par01 par04
ps002,2,par02
ps003,3,par03
|
ballot_selection_base¶
A base model for all ballot selection types: ballot_measure_selection, candiate_selection, and party_selection.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
sequence_order | xs:integer |
Optional | Single | The order in which a selection can be listed on the ballot or in results. This is the default ordering, and can be overridden by OrderedBallotSlectionIds in ordered_contest. | If the field is invalid or not present, then the implementation is required to ignore it. |
person¶
Person
defines information about a person. The person may be a candidate, election administrator,
or elected official. These elements reference Person
:
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
contact_information_id | xs:IDREF |
Optional | Repeats | Refers to the associated contact_information. | If the element is invalid or not present, then the implementation is required to ignore it. |
date_of_birth | xs:date |
Optional | Single | Represents the individual’s date of birth. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Identifiers for this person. | If the element is invalid or not present, then the implementation is required to ignore it. |
first_name | xs:string |
Optional | Single | Represents an individual’s first name. | If the field is invalid or not present, then the implementation is required to ignore it. |
full_name | xs:string |
Optional | Single | Specifies a person’s full name (NB: this information is internationalized_text because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
gender | xs:string |
Optional | Single | Specifies a person’s gender. | If the field is invalid or not present, then the implementation is required to ignore it. |
last_name | xs:string |
Optional | Single | Represents an individual’s last name. | If the field is invalid or not present, then the implementation is required to ignore it. |
middle_name | xs:string |
Optional | Repeats | Represents any number of names between an individual’s first and last names (e.g. John Ronald Reuel Tolkien). | If the field is invalid or not present, then the implementation is required to ignore it. |
nickname | xs:string |
Optional | Single | Represents an individual’s nickname. | If the field is invalid or not present, then the implementation is required to ignore it. |
party_id | xs:IDREF |
Optional | Single | Refers to the associated party. This information is intended to be used by feed consumers to help them disambiguate the person’s identity, but not to be presented as part of any ballot information. For that see candidate PartyId. | If the field is invalid or not present, then the implementation is required to ignore it. |
prefix | xs:string |
Optional | Single | Specifies a prefix associated with a person (e.g. Dr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
profession | xs:string |
Optional | Single | Specifies a person’s profession (NB: this information is internationalized_text because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
suffix | xs:string |
Optional | Single | Specifies a suffix associated with a person (e.g. Jr.). | If the field is invalid or not present, then the implementation is required to ignore it. |
title | xs:string |
Optional | Single | A title associated with a person (NB: this information is internationalized_text because it sometimes appears on ballots in multiple languages). | If the element is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 5 | id,date_of_birth,first_name,gender,last_name,middle_name,nickname,party_id,prefix,profession,suffix,title
per50001,1961-08-04,Barack,male,Obama,Hussein,,par02,,President,II,Mr. President
per50002,1985-11-21,Carly,female,Jepsen,Rae,,par01,,Recording Artist,,
per50003,1926-09-23,John,male,Coltrane,William,Trane,par02,,Recording Artist,Saint,
per50004,1926-05-26,Miles,male,Davis,Dewey,,par01,,Recording Artist,III,
|
contact_information¶
For defining contact information about objects such as persons, boards of authorities,
organizations, etc. ContactInformation is always a sub-element of another object (e.g.
election_administration, office,
person, source). ContactInformation has an optional attribute
label
, which allows the feed to refer back to the original label for the information
(e.g. if the contact information came from a CSV, label
may refer to a row ID).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_line | xs:string |
Optional | Repeats | The “location” portion of a mailing address. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
xs:string |
Optional | Repeats | An email address for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. | |
fax | xs:string |
Optional | Repeats | A fax line for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the location is open (NB: this element is deprecated in favor of the more structured :ref:`multi-csv-hours-open` element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | References an hours_open element, which lists the hours of operation for a location. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_long | lat_long | Optional | Single | Specifies the latitude and longitude of this entity. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | The name of the location or contact. See usage note. | If the field is invalid or not present, then the implementation is required to ignore it. |
phone | xs:string |
Optional | Repeats | A phone number for the contact. | If the field is invalid or not present, then the implementation is required to ignore it. |
uri | xs:anyURI |
Optional | Repeats | An informational URI for the contact or location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,address_line_1,address_line_2,address_line_3,directions,email,fax,hours,hours_open_id,latitude,longitude,latlng_source,name,phone,uri,parent_id
ci0827,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,off001
ci0828,The White House,1600 Pennsylvania Ave,,,josh@example.com,,Early to very late,,,,,Josh Lyman,555-111-2222,http://lemonlyman.example.com,vs01
|
polling_location¶
The PollingLocation object represents a site where voters cast or drop off ballots.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
simple_address_type | simple-address-type |
Optional | Single | Represents the various structured parts of an address to a polling location. | One of AddressStructured and
AddressLine should be present for a
given Polling Location. If none is
present, the implementation is required
to ignore the PollingLocation
element containing it. |
address_line | xs:string |
Optional | Repeats | Represents the various parts of an address to a polling location. | One of AddressStructured and AddressLine
should be present for a given Polling
Location. If none is present, the
implementation is required to ignore the
PollingLocation element containing
it. |
directions | xs:string |
Optional | Single | Specifies further instructions for locating the polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
hours | xs:string |
Optional | Single | Contains the hours (in local time) that the polling location is open (NB: this element is deprecated in favor of the more structured hours_open element. It is strongly encouraged that data providers move toward contributing hours in this format). | If the element is invalid or not present, then the implementation is required to ignore it. |
hours_open_id | xs:IDREF |
Optional | Single | Links to an hours_open element, which is a schedule of dates and hours during which the polling location is available. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_drop_box | xs:boolean |
Optional | Single | Indicates if this polling location is a drop box. | If the field is invalid or not present, then the implementation is required to ignore it. |
is_early_voting | xs:boolean |
Optional | Single | Indicates if this polling location is an early vote site. | If the field is invalid or not present, then the implementation is required to ignore it. |
lat_lng | lat_long | Optional | Single | Specifies the latitude and longitude of this polling location. | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Optional | Single | Name of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
photo_uri | xs:string |
Optional | Single | Contains a link to an image of the polling location. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 | id,name,address_line,structured_line_1,structured_city,structured_state,structured_zip,directions,hours,photo_uri,hours_open_id,is_drop_box,is_early_voting,latitude,longitude,latlng_source
poll001,ALBERMARLE HIGH SCHOOL,,2775 Hydraulic Rd,Charlottesville,VA,22901,Use back door,7am-8pm,www.picture.com,ho001,false,true,38.0754627,78.5014875,Google Maps
poll002,Public Library,Main St Denver CO,,,,,,next to the checkout counter,7am-8pm,www.picture.com,,false,true,38.0754627,78.5014875,Google Maps
|
lat_long¶
The latitude and longitude of a polling location in `WGS 84`_ format. Both latitude and longitude values are measured in decimal degrees.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
latitude | xs:double |
Required | Single | The latitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
longitude | xs:double |
Required | Single | The longitude of the polling location. | If the field is invalid, then the implementation is required to ignore it. |
latlng_source | xs:string |
Optional | Single | The system used to perform the lookup from location name to lat/lng. For example, this could be the name of a geocoding service. | If the field is invalid or not present, then the implementation is required to ignore it. |
simple_address_type¶
A SimpleAddressType
represents a structured address.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
structured_line_1 | xs:string |
Required | Single | The address line for a structured address. Should include the street number, street name, and any prefix and suffix. | If no Line1 is provided, the
implementation should ignore the
SimpleAddressType . |
structured_line_2 | xs:string |
Optional | Single | Additional field for an address | If no Line2 is provided, the
implementation should ignore it. |
structured_line_3 | xs:string |
Optional | Single | Additional field for an address | If no Line3 is provided, the
implementation should ignore it. |
structured_city | xs:string |
Required | Single | The City value of a structured address. | If City is not provided, the
implementation should ignore the
SimpleAddressType . |
structured_state | xs:string |
Required | Single | The State value of a structured address. | If State is not provided, the
implementation should ignore the
SimpleAddressType . |
structured_zip | xs:string |
Optional | Single | The ZIP code of a structured address. | If Zip is not provided, the
implementation should ignore the
SimpleAddressType . |
precinct¶
The Precinct object represents a precinct, which is contained within a Locality. While the id attribute does not have to be static across feeds for one election, the combination of Source.VipId, Locality.Name, Precinct.Ward, Precinct.Name, and Precinct.Number should remain constant across feeds for one election (NB: not all of the fields just mentioned are required – omitting those non-required fields is fine).
Voters can be assigned to a precinct in two ways. A voter location modeled by StreetSegment is assigned to a precinct by StreetSegment.PrecinctId. Alternatively, a precinct’s spatial boundary can be modeled with Precinct.SpatialBoundary. Any registered voter address contained within the spatial boundary of the precinct is assigned to that precinct.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
ballot_style_id | xs:IDREF |
Optional | Single | Links to the ballot_style, which a person who lives in this precinct will vote. | If the field is invalid or not present, then the implementation is required to ignore it. |
electoral_district_ids | xs:IDREFS |
Optional | Single | Links to the :ref:`multi-csv-electoral-district`s (e.g., congressional district, state house district, school board district) to which the entire precinct/precinct split belongs. Highly Recommended if candidate information is to be provided. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Other identifier for the precinct that relates to another dataset (e.g. `OCD-ID`_). | If the element is invalid or not present, then the implementation is required to ignore it. |
is_mail_only | xs:boolean |
Optional | Single | Determines if the precinct runs mail-only elections. | If the field is missing or invalid, the implementation is required to assume IsMailOnly is false. |
locality_id | xs:IDREF |
Required | Single | Links to the locality that comprises the precinct. | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
name | xs:string |
Required | Single | Specifies the precinct’s name (or number if no name exists). | If the field is invalid, then the
implementation is required to ignore the
Precinct element containing it. |
number | xs:string |
Optional | Single | Specifies the precinct’s number (e.g., 32 or 32A – alpha characters are legal). Should be used if the Name field is populated by a name and not a number. | If the field is invalid or not present, then the implementation is required to ignore it. |
polling_location_ids | xs:IDREFS |
Optional | Single | Specifies a link to the precinct’s polling_location object(s). | If the field is invalid or not present, then the implementation is required to ignore it. |
precinct_split_name | xs:string |
Optional | Single | If this field is empty, then this Precinct object represents a full precinct. If this field is present, then this Precinct object represents one portion of a split precinct. Each Precinct object that represents one portion of a split precinct must have the same Name value, but different PrecinctSplitName values. See the sample_feed.xml file for examples. | If the field is invalid or not present, then the implementation is required to ignore it. |
spatial_boundary_id | xs:IDREF |
Optional | Single | Defines the spatial boundary of the precinct. All voter addresses contained within this boundary are assigned to the precinct. If a voter address also maps to a StreetSegment, then the precinct assignment from the StreetSegment will be preferred over the assignment from the spatial boundary. | If the element is invalid or not present, then the implementation is required to ignore it. |
ward | xs:string |
Optional | Single | Specifies the ward the precinct is contained within. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,ballot_style_id,electoral_district_ids,external_identifier_type,external_identifier_othertype,external_identifier_value,is_mail_only,locality_id,name,number,polling_location_ids,precinct_split_name,spatial_boundary_id,ward
pre90111,bs00010,ed001,ocd-id,,ocd-division/country:us,false,loc001,203 - GEORGETOWN,0203,poll001 poll002,split13,sb1,,5
pre90112,bs00011,ed002,fips,,42,false,loc001,203 - GEORGETOWN,0203,poll003,split26,,6
pre90113,bs00010,ed003,,,,false,loc002,203 - GEORGETOWN,0203,poll004,split54,sb1,7
|
spatial_boundary¶
The SpatialBoundary
object defines a boundary in space. This boundary is usually defined by one or more discrete, closed polygonal shapes.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_geospatial_feature_id | xs:IDREF |
Required | Single | The spatial boundary defined by a geospatial feature that is external to the VIP feed. | If the element is invalid, then the
implementation is required to ignore the
SpatialBoundary element containing
it. |
1 2 | id,external_geospatial_feature_id
sb1,egf1
|
external_geospatial_feature¶
The ExternalGeospatialFeature
object contains a reference to a geospatial feature (one or more shapes) contained in a separate file external to the VIP feed.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
external_file_id | xs:IDREF |
Required | Single | Links to the external_file containing the geospatial shape(s) that define the feature’s boundary. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
file_format | geospatial_format | Required | Single | The format of the geospatial file. | If the field is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
feature_identifier | feature_identifier | Required | Repeats | Identifiers indicating which specific shape(s) to use from the geospatial file. These refer to identifiers within the referenced external file. This is a repeated field in the XML specification, but a scalar field in the CSV specification. If more than one identifier is required with the CSV specifiation, multiple values can be provided by delimited by space. | If the element is invalid, then the
implementation is required to ignore the
ExternalGeospatialFeature element
containing it. |
1 2 | id,external_file_id,file_format,shape_identifiers
egf1,ef1,shp,0 7 9
|
feature_identifier¶
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
index | xs:int |
Optional | Single | The index value for the shapefile feature. | If the field is invalid or not present, then the implementation is required to ignore it. |
retention_contest¶
RetentionContest
extends ballot_measure_contest and represents a
contest where a candidate is retained in a position (e.g. a judge).
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
candidate_id | xs:IDREF |
Required | Single | Links to the candidate being retained. | If the field is invalid or not present,
the implementation is required to ignore
the RetentionContest element
containing it. |
office_id | xs:IDREF |
Optional | Single | Links to the information about the office. | If the field is invalid or not present, then the implementation is required to ignore it. |
source¶
The Source object represents the organization that is publishing the information. This object is the only required object in the feed file, and only one source object is allowed to be present.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
name | xs:string |
Required | Single | Specifies the name of the organization that is providing the information. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
vip_id | xs:string |
Required | Single | Specifies the ID of the organization. VIP uses FIPS_ codes for this ID. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
date_time | xs:dateTime |
Required | Single | Specifies the date and time of the feed production. The date/time is considered to be in the timezone local to the organization. | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
description | xs:string |
Optional | Single | Specifies both the nature of the organization providing the data and what data is in the feed. | If the element is invalid or not present, then the implementation is required to ignore it. |
organization_uri | xs:string |
Optional | Single | Specifies a URI to the home page of the organization publishing the data. | If the field is invalid or not present, then the implementation is required to ignore it. |
feed_contact_information_id | xs:IDREF |
Optional | Single | Reference to the person who will respond to inquiries about the information contained within the file. | If the element is invalid or not present, then the implementation is required to ignore it. |
terms_of_use_uri | xs:anyURI |
Optional | Single | Specifies the website where the Terms of Use for the information in this file can be found. | If the field is invalid or not present, then the implementation is required to ignore it. |
version | xs:string |
Required | Single | Specifies the version of the data | If the field is invalid, then the
implementation is required to ignore the
Source element containing it. |
1 2 | id,date_time,description,name,organization_uri,terms_of_use_uri,vip_id,version
source01,2016-06-02T10:24:08,SBE is the official source for Virginia data,"State Board of Elections, Commonwealth of Virginia",http://www.sbe.virginia.gov/,http://example.com/terms,51,5.1
|
state¶
The State object includes state-wide election information. The ID attribute is recommended to be the state’s FIPS code, along with the prefix “st”.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
election_administration_id | xs:IDREF |
Optional | Single | Links to the state’s election administration object. | If the field is invalid or not present, then the implementation is required to ignore it. |
external_identifiers | external_identifiers | Optional | Single | Other identifier for the state that relates to another dataset (e.g. `OCD-ID`_). | If the element is invalid or not present, then the implementation is required to ignore it. |
name | xs:string |
Required | Single | Specifiers the name of a state, such as Alabama. | If the field is invalid, then the
implementation is required to ignore the
State element containing it. |
polling_location_ids | xs:IDREFS |
Optional | Single | Specifies a link to the state’s polling locations. If early vote centers or ballot drop locations are state-wide (e.g., anyone in the state can use them), they can be specified here, but you are encouraged to only use the precinct element. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 | id,election_administration_id,external_identifier_type,external_identifier_othertype,external_identifier_value,name,polling_location_ids
st51,ea123,ocd-id,,ocd-division/country:us/state:va,Virginia,
|
street_segment¶
A Street Segment objection represents a portion of a street and the links to the precinct that this geography (i.e., segment) is contained within. The start address house number must be less than the end address house number unless the segment consists of only one address, in which case these values are equal.
Tag | Data Type | Required? | Repeats? | Description | Error Handling |
---|---|---|---|---|---|
address_direction | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the entire address. An example is “NE” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
city | xs:string |
Required | Single | The city specifies the city or town of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
includes_all_addresses | xs:boolean |
Optional | Single | Specifies if the segment covers every address on this street. If this is true, then the values of StartHouseNumber and EndHouseNumber should be ignored. The value of OddEvenBoth must be both. | If the field is invalid or not present, then the implementation is required to ignore it. |
includes_all_streets | xs:boolean |
Optional | Single | Specifies if the segment covers every street in this city. If this is true, then the values of OddEvenBoth, StartHouseNumber, EndHouseNumber, StreetName, and Zip should be ignored. | If the field is invalid or not present, then the implementation is required to ignore it. |
odd_even_both | oeb_enum | Optional | Single | Specifies whether the odd side of the street (in terms of house numbers), the even side, or both are in included in the street segment. | If the field is not present or invalid, the implementation is required to ignore the StreetSegment containing it. |
precinct_id | xs:IDREF |
Required | Single | References the precinct that contains the entire street segment. If a precinct has a spatial_boundary which also contains the entire street segment, then the precinct assignment from the segment will be preferred over the assignment defined by the spatial boundary. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
start_house_number | xs:integer |
Optional | Single | The house number at which the street segment starts. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, this value must be less than or equal to EndHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the StartHouseNumber is greater than the EndHouseNumber, the implementation should ignore the element containing them. |
end_house_number | xs:integer |
Optional | Single | The house number at which the street segment ends. This value is necessary for the street segment to make any sense. Unless IncludesAllAddresses or IncludesAllStreets are true, it must be greater than or equal to StartHouseNumber. If IncludesAllAddresses or IncludesAllStreets are true, this value is ignored. | Unless IncludesAllAddresses or IncludesAllStreets are true, if the field is not present or invalid, the implementation is required to ignore the StreetSegment element containing it. If the EndHouseNumber is less than the StartHouseNumber, the implementation should ignore the element containing it. |
house_number_prefix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., ‘B’ in ‘B22 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
house_number_suffix | xs:string |
Optional | Single | Part of a street address. It may contain letters or slashes (e.g., 1/2 in ‘22 1/2 Main St’). If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
state | xs:string |
Required | Single | Specifies the two-letter state abbreviation of the address. | If the field is invalid, then the
implementation is required to ignore the
StreetSegment element containing it. |
street_direction | xs:string |
Optional | Single | Specifies the (inter-)cardinal direction of the street address (e.g., the “E” in “100 E Capitol St NE”). | If the field is invalid or not present, then the implementation is required to ignore it. |
street_name | xs:string |
Optional | Single | Represents the name of the street for the address. A special wildcard, “*”, denotes every street in the given city/town. It optionally may contain street direction, street suffix or address direction (e.g., both “Capitol” and “E Capitol St NE” are acceptable for the address “100 E Capitol St NE”), however this is not preferred. Preferred is street name alone (e.g. “Capitol”). | If the field is invalid or not present, then the implementation is required to ignore it. |
street_suffix | xs:string |
Optional | Single | Represents the abbreviated, non-directional suffix to the street name. An example is “St” for the address “100 E Capitol St NE.” | If the field is invalid or not present, then the implementation is required to ignore it. |
unit_number | xs:string |
Optional | Repeats | The apartment/unit number for a street segment. If this value is present then StartHouseNumber must be equal to EndHouseNumber. This field cannot be used if IncludesAllAddresses or IncludesAllStreets are true. | If the field is invalid or not present, then the implementation is required to ignore it. |
zip | xs:string |
Optional | Single | Specifies the zip code of the address. It may be 5 or 9 digits, and it may include a hyphen (‘-‘). It is required as it helps with geocoding, which is crucial for distributors. | If the field is invalid or not present, then the implementation is required to ignore it. |
1 2 3 4 | id,address_direction,city,includes_all_addresses,includes_all_streets,odd_even_both,precinct_id,start_house_number,end_house_number,house_number_prefix,house_number_suffix,state,street_direction,street_name,street_suffix,unit_number,zip
ss000001,N,Washington,false,false,odd,pre90113,101,199,,,DC,NW,Delaware,St,,20001
ss000002,S,Washington,true,false,both,pre90112,,,,,DC,SE,Wisconsin,Ave,,20002
ss000003,N,Washington,false,false,even,pre90113,100,100,A,1/2,DC,NW,Delaware,St,,20001
|
Enumerations (Separate Pages)¶
ballot_measure_type¶
A list of the various types of ballot measures. States may have different legal definitions of each type; Wikipedia_ has more details about each type. These values are to help states with multiple types of non-candidate-based contests distinguish between each type; as such, the definitions in this table are simple guidelines. Ultimately it is up to the state or local election official to choose the value which best describes the ballot measure(s) in their jurisdiction.
Tag | Description |
---|---|
ballot-measure | A catch-all for generic types of non-candidate-based contests. |
initiative | These are usually citizen-driven measures to be placed on the ballot. These could include both statutory changes and constitutional amendments. |
referendum | These could include measures to repeal existing acts of legislation, legislative referrals, and legislatively-referred state constitutional amendments. |
other | Anything that does not fall into the above categories. |
candidate_post_election_status¶
Tag | Description |
---|---|
advanced-to-runoff | For contests in which the top N candidates advance to the next round. |
projected-winner | A candidate is expected to win, but official results are not yet complete. |
winner | The candidate has officially won. |
withdrawn | The candidate has withdrawn from the contest. |
candidate_pre_election_status¶
Tag | Description |
---|---|
filed | The candidate has filed for office but not yet been qualified. |
qualified | The candidate has qualified for the contest. |
withdrawn | The candidate has withdrawn from the contest (but may still be on the ballot). |
write-in |
checksum_algorithm¶
Tag | Description |
---|---|
sha-256 | 256-bit cryptographic hash algorithm of the SHA-2 family |
sha-512 | 512-bit cryptographic hash algorithm of the SHA-2 family |
district_type¶
Enumeration describing the set of possible jurisdiction and district types. Please use the enumeration value which most accurately reflects the type of district or jurisdiction in your state or county. For example, “town” and “township” may mean different things – or not be defined at all – in your state, so please use the definition which best matches your local meaning.
Tag | Description |
---|---|
borough | A borough |
city | A city. |
city-council | A specific seat/jurisdiction for a city, town, or village council. |
congressional | A United States congressional district. |
county | A county. |
county-council | A county council district, either in its entirety or for a specific seat. |
judicial | A judicial district. |
municipality | A civil division which is not a town, city, village, or county. |
national | The United States. |
school | A school district. |
special | A `special-purpose district`_ that exist separate from general-purpose districts. |
state | A state, district, commonwealth, or U.S. territory. |
state-house | The lower house of a state legislature. |
state-senate | The upper house of a state legislature. |
town | A town_. |
township | A township, which may be different than a town. See the `Wikipedia article`_. |
utility | A non-water public or municipal utility district. |
village | A village district. |
ward | A ward. |
water | A water district. |
other | Any district not described above. Use the OtherType field to describe it. |
geospatial_format¶
Geospatial file formats that are supported by the VIP specification.
Tag | Description |
---|---|
shp | ESRI Shapefile (reference) |
identifier_type¶
Tag | Description |
---|---|
fips | Federal Information Processing Standards codes for states_, counties_, and cities_. |
local-level | An identifier generated or used by local governments or organizations. |
national-level | An identifier generated or used by national organizations. |
ocd-id | An `Open Civic Data Division Identifier`_. |
state-level | An identifier generated or used by state governments or organizations. |
other | Any identifier which doesn’t fall into any of the above categories. |
oeb_enum¶
Tag | Description |
---|---|
both | Both even and odd addresses within the range. |
even | Only even-numbered addresses within the range. |
odd | Only odd-numbered addresses within the range. |
office_term_type¶
Tag | Description |
---|---|
full-term | This election is for an office for which the existing term has been completed. |
unexpired-term | This election is for an office for which the original term is not yet complete. |
vote_variation¶
Note that the descriptions below describe what the enumeration names stand for in the context of the VIP spec, rather than provide general definitions of the election terms that the names correspond to. For example, even though there are majority voting methods that are not “1-of-m” (e.g. ranked choice voting), we constrain “majority” to 1-of-m. We do this to eliminate any source of ambiguity when a single enumeration value needs to be assigned to a contest.
Tag | Description |
---|---|
1-of-m | A method where each voter can select up to one option. |
approval | `Approval voting`_, where each voter can select as many options as desired. |
borda | `Borda count`_, where each voter can rank the options, and the rankings are assigned point values. |
cumulative | `Cumulative voting`_, where each voter can distribute their vote to up to N options. |
majority | A 1-of-m method where the winner needs more than 50% of the vote to be elected. |
n-of-m | A method where each voter can select up to N options. |
plurality | A 1-of-m method where the option with the most votes is elected, regardless of whether the option has more than 50% of the vote. |
proportional | A `proportional representation`_ method (other than STV), which is any system that elects winners in proportion to the total vote. |
range | `Range voting`_, where each voter can select a score for each option. |
rcv | `Ranked choice voting`_ (RCV), where each voter can rank the options, and the ballots are counted in rounds. Also known as instant-runoff voting (IRV) and the single transferable vote (STV). |
super-majority | A 1-of-m method where the winner needs more than some predetermined fraction of the vote to be elected, where the fraction is more than 50% (e.g. three-fifths or two-thirds). |
other | Used when the vote variation type is not included in this enumeration. |
voter_service_type¶
Tag | Description |
---|---|
absentee-ballots | This department handles the dispatch, tracking, and return of absentee ballots. |
overseas-voting | The department for overseas, military, and other outside-the-U.S. voters. |
polling-places | This deparment handles the selection and management of polling places. |
voter-registration | The deparment that manages voter registration. |
other | Any other service not covered by the above descriptions. |
Best Practices¶
Data Best Practices¶
Following is a series of best practice for data collection and file creation and suggestions about best practices of formatting data within your VIP XML and CSV file.
Naming convention¶
While many of the Voting Information Project’s data processes are managed by software, the quality of the entire system relies on human intervention, especially for error reporting and quality control. For this reason, VIP files should follow a naming convention that describes the contents of each individual feed file in an accessible way.
The file containing the VIP feed should be named using the following convention:
vipfeed-${FIPS}-${ELECTION_DATE}-${STATE}[-${LOCAL}].{xml|zip}
An explanation of each of the segments of the file naming convention above are as follows:
${FIPS}
- The FIPS code for the jurisdiction.${ELECTION_DATE}
- The date of the election in ISO 8601 format.${STATE}
- The full state name (e.g. Alaska, Arkansas, etc…) and not the abbreviation. If there are spaces in the state name, they should be substituted with underscores (e.g. New York -> New_York).${LOCAL}
(optional) - This additional identifier should be used if the file contains data from a specific jurisdiction. As with${STATE}
above, all spaces should be substituted with underscores. For example, if the data contained in the file only covers Maricopa County, AZ for the November 6, 2012 election, the file name would bevipfeed-04013-2012-11-06-Arizona-Maricopa_County.xml
.{xml|zip}
- If the file is an uncompressed XML document, the extension should be.xml.
If the file is zipped, the file extension should end with.zip
.
For a final example, vipfeed-19-2012-11-06-Iowa.zip
denotes Iowa’s (NB: the FIPS code
for IA is 19) feed for the Nov 6, 2012 election that has been compressed.
Element Identifiers¶
Most elements within the VIP feed require unique identifiers, xs:ID data types. Conformance to xs:ID
requires
the identifying record to:
- begin with a letter or underscore
- only contain letters, digits, hyphens and periods
- be unique across the VIP data set
In order to maintain uniqueness and provide context for the identifiers, the best practice is to use Hungarian-Style notation for identifiers.
ID values should follow Hungarian-Style notation, were the identifier prefix implicitly names the data element. Below
is a list of preferred prefixes by element (e.g. par00001 for a Party
id
):
Element | Prefix |
---|---|
BallotMeasureContest | bmc |
BallotMeasureSelection | bms |
BallotStyle | bs |
Candidate | can |
CandidateContest | cc |
CandidateSelection | cs |
ContactInformation | ci |
Election | ele |
ElectionAdministration | ea |
ElectoralDistrict | ed |
HoursOpen | hours |
Locality | loc |
Office | off |
OrderedContest | oc |
Party | par |
PartyContest | pc |
PartySelection | ps |
Person | per |
PollingLocation | pl |
RetentionContest | rc |
Source | src |
State | st |
StreetSegment | ss |
File Structure¶
All XML and CSV files should be encoded UFT-8 and line breaks should be LF (\n
) as opposed to CR LF (\r\n
).
For consistency across files and to aid human readability all indentation of elements should be an indent of two spaces and tabs should not be used. Each child node of an element should also be indented an additional two spaces.
General Data Structure¶
All data that are presented to end users of the data (i.e. contest names, referendum text, polling location names, street names, proper names), where possible, should be converted to Title Case to aid readability.
All data should be trimmed to remove leading and trailing white space.
Optional elements without values should be omitted from XML feed.
Specific Data Types¶
Elements with a data type of xs:integer
must contain a valid whole number greater than zero.
Elements with a data type of xs:anyURI
should be entered as a fully qualified domain name
(e.g. https://www.votinginfoproject.org/)
Elements with a data type of xs:dateTime
should be entered in ISO-8601 format.
Elements with a data type of xs:boolean
should either have a value of true
or false
Elements with a data type of xs:language
should contain a two character, lower-case, value corresponding to the
ISO 639 standard.
Elements that have enumerations which include an other
should have a corresponding value assigned to OtherType
within
the containing element. For example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <BallotMeasureContest id="bm390616670907">
<BallotSelectionId>bms390616670907</BallotSelectionId>
<ElectoralDistrictId>ed3906177703103</ElectoralDistrictId>
<Name>Proposed Tax Levy School District</Name>
<SequenceOrder>34</SequenceOrder>
<FullText>
<Text language="en">An additional tax for the benefit of the Lockland Local School District, County of Hamilton,
Ohio, for the purpose of CURRENT EXPENSES at a rate not exceeding eleven and two-tenths (11.2) mills for each
one dollar of valuation, which amounts to one dollar and twelve cents ($1.12) for each one hundred dollars of
valuation, for a continuing period of time, commencing in 2015, first due in calendar year 2016.</Text>
</FullText>
<SummaryText>
<Text language="en">4 Proposed Tax Levy</Text>
</SummaryText>
<Type>other</Type>
<OtherType>bond</OtherType>
</BallotMeasureContest>
|
Specific Data Elements¶
Street Segments: Valid street segment records should not contain leading zeros in xs:integer
fields and should have
a Zip
value of 00000
if a value is unknown.
External Identifiers: External identifiers with an enumeration of fips
should contain valid FIPS code values as
defined by the U.S. Census Bureau. External identifiers with an enumeration of ocd-id
should contain a valid
Open Civic Data Division Identifier.
For long text fields (e.g. FullText
in BallotMeasureContest
) the XML line break (

) should be used to
enforce line break styling.
In all fields the characters <
, >
, and &
should be encoded <
, >
, and &
respectively.
Geospatial Data¶
The following sections provide guidance and best practices on using geospatial data with a VIP feed. Geospatial data represents the geographic modeling of a shape on the Earth’s surface (i.e. a polygon on a map), and within the context of a VIP feed is primarily used to model the boundary of voter precincts. In places where voter precinct shapes are available, this capability is intended to be straightforward and lightweight to integrate with existing GIS tooling.
Geodetic Datum¶
VIP exclusively uses the 84 revision of the World Geodetic System (WGS 84) as the geodetic reference system by which geospatial coordinates are defined. This applies to geospatial coordinates provided within the VIP feed itself (e.g. PollingLocation.LatLng) as well as coordinates provided in an external geospatial file.
Assigning Voters to Precincts¶
Voter precincts are the atomic unit of electoral districts in the U.S., and provide the mechanism by which voters are mapped to their polling places, ballot information and more. It is critical that voter locations are mapped to the correct precinct in a VIP feed in order to provide the most accurate and reliable voting information.
There are two mechanisms by which voters can be assigned to precincts in a VIP feed:
- Street segments
- A voter address that maps to a street segment is assigned to the precinct given by StreetSegment.PrecinctId. This is the traditional approach of assigning voters to precincts that has been in use since the beginning of the VIP specification.
- Containment within a precinct boundary
- A geocoded voter address that is contained within the geographic boundary of a precinct is considered assigned to that precinct. The geographic boundary of each precinct is defined by Precinct.SpatialBoundary. This is a newer approach of assigning voters to precincts that was supported starting with version 6.0 of the VIP specification. Compared to the approach of using street segments, geospatial data offers a far more accurate and reliable solution to mapping voters to precincts, and thus should be the preferred approach whenever possible.
Providing both street segments and precinct shapes¶
There are some cases where precinct boundaries alone are not sufficient to accurately map all voters to their precinct. For example, if a precinct boundary divides an apartment building, there is no way to distinguish the correct precinct for voters that live in this building using a two-dimensional shape on a map.
To mitigate this limitation of geospatial data, it is possible to provide both street segments and precinct shapes in the same VIP feed. If a voter’s location is determined to map to a street segment and is also contained within a precinct shape, the precinct assignment from the street segment will be preferred.
Using the above example where a precinct boundary runs through an apartment building, this scenario could be handled by providing street segments in the VIP feed, in addition to precinct shapes, to specify the mapping of apartment numbers to precinct. For N apartments in the building, there could be N street segments provided in the feed, each with a distinct StreetSegment.UnitNumber and precinct assignment. If a voter address maps to one of these street segments, the precinct assignment from the segment will supersede a precinct assignment given by containment with a precinct shape.
Exporting and packaging geospatial files with a VIP feed¶
Geospatial data files are provided in a native geospatial format. Each geospatial file should adhere to standard industry conventions and requirements of the corresponding GeospatialFormat. In most cases, these files will be exported directly from a GIS tool or an Election Management System and delivered alongside a VIP feed.
All referenced external files need to be packaged with the VIP feed file, and archived together within a single ZIP file. The following is an example of the file structure for the case of an XML feed file that includes ESRI shapefiles.
Example file structure:
- vipfeed-19-2012-11-06-Arizona.zip
- vipfeed-19-2012-11-06-Arizona.xml
- precinct_shapes1.zip
- precinct_shapes1.shp
- precinct_shapes1.shx
- precinct_shapes1.dbf
- precinct_shapes2.zip
- precinct_shapes2.shp
- precinct_shapes2.shx
- precinct_shapes2.dbf
The expected file type and structure of each individual geospatial file will depend on the GeospatialFormat being used. The external file referenced from the VIP feed may be a flat file, but it could also be a ZIP file containing multiple relevant files, as the geospatial format requires. The following provides geospatial data file requirements by format.
Expected file type and structure by Geospatial Format:
GeospatialFormat | Expected file type | Description |
---|---|---|
shp (ESRI shapefile) | .zip | The referenced external file should be a ZIP archive containing, at a minimum, all files required by the ESRI Shapefile f ormat. The filename referenced from the VIP feed should be the name of the ZIP archive for the shapefile. Required files within the archive include a main .shp geometry file, a .shx index file, and a .dbf attributes file. Other optional files as part of the ESRI Shapefile specification are permitted, but may be ignored. Individual files within the shapefile archive are identified by file extension. For example, the main geometry file is identified by the file within the archive with a .shp file extension, regardless of the file name. It is therefore required that there is only one file per expected file type within the archive. |
Referencing specific shapes within a geospatial data file¶
Geospatial data files will usually contain many shapes. For example, depending on how the source shape data is managed, it may be easiest to export a single file containing all precinct shapes represented in the VIP feed. A precinct boundary is modeled in the feed as a reference to the external geospatial data file, but in most cases only one or a few shapes contained in that file are relevant to the precinct.
The specific shape(s) within the external file that comprise the spatial boundary of the geometric feature are captured by the field ExternalGeospatialFeature.ShapeIdentifier. ShapeIdentifier is a repeated string field, but the expected value will depend on the geospatial format of the external file. For example, an integer type is expected when using the ESRI shapefile format, so the string value of ShapeIdentifier should be parsable as an integer.
Expected type of ShapeIdentifier by GeospatialFormat:
GeospatialFormat | ShapeIdentifier expected type | Description |
---|---|---|
shp (ESRI shapefile) | 32-bit integer | ShapeIdentifier should be parsable as a 32-bit integer. Geometric features in an ESRI shapefile are ordered in sequence, and the ShapeIdentifier value corresponds to the zero-based index of a record within the file. For example, a ShapeIdentifier value of “35” is a reference to the 36th sequential record in the shapefile. |
External file checksums¶
Geospatial data is provided in the form of supplemental files external to the VIP feed itself. Since this effectively divides the full set of information of the feed across multiple files, it’s essential that references between files be reliable. This is ensured by verifiable cryptographic checksums.
Each external file reference includes the name of the file and its checksum. A checksum includes both the raw cryptographic hash of the file’s contents, as well as information about which cryptographic algorithm was used to compute the value. A consumer of a VIP feed should be able to compute a checksum value of an external file using the same algorithm and independently verify it matches the checksum value in the feed.
It’s worth noting that having a file checksum also introduces an opportunity for consumers of the data to optimize their processing of it. If the contents of a VIP feed are updated, but the checksum for an external geospatial data file has not changed, then the consumer could omit having to reprocess the geospatial aspects of the feed.
Requirements for precinct shapes¶
The following are practical requirements when defining the spatial boundary of a Precinct element (whether a precinct or precinct split) with geospatial shapes.
- The resolution of a polygon for a precinct shape can be as coarse or fine as needed, so long as the shape accurately represents the boundary of the precinct.
- No two shapes should overlap.
- All polygons must form a closed loop. That is, the polygon should start and end from the same point.
- The border of a polygon must not intersect itself.
- The spatial boundary of a Precinct is defined by a single geospatial feature. That feature, however, may contain one or more discrete and non-overlapping polygons as necessary to define the full extent of the boundary.
- ShapeIdentifier must be a valid, existing reference in the external file.
- ShapeIdentifier must have an expected type according to the table above.