Revision history

  • Recent updates include guidelines for ElectoralCommission Names and example XML.

  • Documentation and Validator support have been updated for the voter-information FeedType.

  • Additional values have been added to VoterInformationWebsiteType.

  • RetentionContest has been added to the available Contest types.

Changes to the CDF documentation are listed here.

Jun 16, 2026

Updated legacy government body schema to an error.

Jun 16, 2026

  • Added the Named Entity Changes guide.

Jun 2, 2026

  • Added tse-candidate-number as an external identifier to Candidate.

May 19, 2026

  • Added ResultsReportingStagesMustHaveUniqueType validator rule to ensure that each ResultsReportingStage in a ResultsReportingStageCollection has a unique StageType.

May 18, 2026

  • Added SqsQueueNameRequiresS3SourceDirPath validator rule to ensure that if SqsQueueName is set in a metadata feed, SourceDirPath must also be set and must be an s3 path.

May 7, 2026

  • Added AttributionDepthLimit rule to ensure <Attribution> trees under <ResultsReportingStage> have at most 3 levels of recursion/depth.
  • Added AttributionCyclesValidation rule to ensure <Attribution> elements don't contain directed cycles (loops) between nodes.

May 6, 2026

  • Added ValidateIncludeInAggregationBallotSelections rule to check that the sum of vote counts for selections marked as IncludedInAggregation does not exceed the AggregateBallotSelection vote count.
  • Added rule to enforce CountedInTotal constraints on SpecialBallotSelections.
  • Added ValidateResultsEmbargoEnd rule to check that ResultsEmbargoEnd is not after the start of the official ResultsReportingStage.
  • Added ValidateResultsExpected rule to check that ResultsExpected is not before the first ResultsReportingStage (excluding the no-results stage).
  • Added NotEmptyUniqueDataSourceUris, UniqueDataSourceLanguages, and UniqueDataSourceDisplayNames rules to verify DataSourceCollection elements. Also, added DisplayName to the MultipleInternationalizedTextWithSameLanguageCode.

May 5, 2026

  • Added ValidatePollsCloseDatetimes rule to check that LatestPollsClose is not before EarliestPollsClose.
  • Deleted PartiesHaveValidColors rule. These values are also validated by the schema for HtmlColorString.
  • Updated ValidateDuplicateColors rule to support DarkThemeColor and LightThemeColor.

April 30, 2026

  • Added WinnerCountLimit validator rule to check that the number of winners or projected winners in a contest does not exceed the number of elected seats.
  • Removed support for candidate-image annotation in ContactInformation.
  • Add rules to restrict ImageUri with annotation candidate-image to at most one per Person and also to ensure candidate image URIs are unique across persons.

April 29, 2026

  • Added EmptyString and EmptyText rules to METADATA_RULES.

April 16, 2026

  • Added more examples to metadata_sample_feed.xml.
  • Fixed multiple sample feed files to ensure they pass validation.

April 14, 2026

  • Updated yearly feed longevity to only be allowed for pre-election feeds. Feeds of type election-results must always be limited.

March 25, 2026

  • Updating Metadata sample feed SourceDirPath value to match regular expression expectation.

March 19, 2026

  • Added IsTest and SqsQueueName to Feed.

March 18, 2026

  • Added SpecialBallotSelection subtype of BallotSelection.
  • Added AggregateBallotSelection, BlankBallotSelection, NoneOfTheAboveBallotSelection, and NullBallotSelection to Contest.
  • Added IncludedInAggregation to CandidateSelection and PartySelection.
  • Added Attribution and DataSource element definitions and DataSourceCollection to ElectionReport.
  • Added ResultsReportingStage and ResultsReportingStageType definitions and ResultsReportingStageCollection and CurrentResultsReportingStage to Contest.
  • Added PartyColors definition and Colors to Party.

March 17, 2026

  • Added IsNotable to Candidate, Contest, and Party.
  • Added PartyLabel to Candidate.
  • Added ImageUri to Person.
  • Added ResultsExpected, ResultsEmbargoEnd, EarliestPollsClose, and LatestPollsClose to Contest.

March 11, 2026

  • Removed special handling of IssuerAbbreviation from EmptyString rule.

February 26, 2026

  • Restricted VoteCountsCollection to one per BallotSelection. (This still allows for multiple VoteCounts within that collection.)

February 24, 2026

  • Fixed references to OfficeholderSubFeed that were were incorrectly written as OfficeHolderSubFeed.
  • Restricted SourceDirPath in the metadata feed to supported filepath types.

February 23, 2026

  • Updated VoteCounts enumerations to support both seats-delta-mandate and seats-delta-institutional.

February 18, 2026

  • Made ElectionEventCollection and OfficeholderSubFeed mutually exclusive in the Feed element in metadata feeds.

February 12, 2026

  • Added guidance to Simple data types for PartialDate being interpreted as the latest possible date in the range.

February 11, 2026

  • Added OfficeHolderTenure to MissingStableIds CDF Validator rule to ensure all officeholder tenures have stable IDs.

January 28, 2026

  • Added FeedElementsShouldHaveSubElementsBasedOnType CDF Validator rule to ensure Feed entries in the Metadata Feed have appropriate sub-elements.

January 15, 2026

  • Delete ElectoralDistrictOcdId rule now that it is fully replaced by the broader GpUnitOcdId rule.

  • Added mayor as an Executive Office Role in the CDF Validator.

January 13, 2026

  • Added EmptyString validator rule to check that string fields are not empty or only contain whitespace (temporarily a warning for IssuerAbbreviation).

December 10, 2025

  • Updated the CDF XSD to make IssuerAbbreviation optional.

November 18, 2025

  • Updated GpUnitOcdId rule to check all GpUnits expected to have OCD IDs have valid OCD IDs, and replaced ElectoralDistrictOcdId rule with a placeholder until safe to remove.

November 12, 2025

  • Added guidance to Simple data types highlighting the need to use the Gregorian calendar for dates.

October 22, 2025

September 29, 2025

  • Updated guidelines for ElectoralCommission Names including example XML.

August 5, 2025

  • Update Feed documentation and Validator support for FeedType of voter-information.

July 23, 2025

  • Add additional values to VoterInformationWebsiteType.

July 11, 2025

  • Added RetentionContest to the available Contest types.

July 7, 2025

  • Updated Metadata Feed documentation and validator to clarify canceled election events don't need to be considered when determining a Feed inactive date.

June 25, 2025

  • Added whatsapp as a platform for AnnotatedUri.

June 16, 2025

  • Updated Voter Information documentation for VoterInformationWebsite and ElectoralCommissionWebsite to reflect definitions in the CDF schema.

May 29, 2025

  • Replaced NoSourceDirPathBeforeInitialDeliveryDate validator rule with SourceDirPathMustBeSetAfterInitialDeliveryDate.

May 27, 2025

  • Added Validator support and basic checks for Voter information feeds.

May 22, 2025

  • Published a guide to aid in determining officeholder term dates.

May 13, 2025

May 7, 2025

May 6, 2025

  • Update PersonHasOffice rule to check new OfficeHolderTenure schema.

April 18, 2025

  • Added clarification that FullName elements of People shouldn't contain the person's title.

April 10, 2025

  • Added new schema for office / officeholder tenure split.

March 12, 2025

  • Added judge, cabinet member, general purpose officer, and special purpose officer to office roles and added logic in validator to allow two combinations of roles: head of government & head of state and cabinet member & general purpose officer.

March 4, 2025

  • Updated ElectionDateType with details on how StartDate and EndDate will be interpreted for bounded elections.

February 26, 2025

  • Updated Metadata feed to add note about waiting 60 days after FeedInactiveDate to remove a feed from metadata feed.

January 29, 2025

January 27, 2025

  • Updated Contest guidelines to add PassageThreshold definition to BallotMeasureContest

January 15, 2025

  • Updated guidelines for the FeedInactiveDate property of the metadata Feed entity.

November 19, 2024

November 11, 2024

November 1, 2024

  • Update EmptyText validator rule to raise an error instead of a warning.

August 26, 2024

  • Update the OfficeLevel enum to add detailed descriptions.

July 17, 2024

July 10, 2024

  • Adding recommendations for the 'FeedInactiveDate' and SourceDirPath

June 24, 2024

  • Update PartyId to allow for multiple PartyIds for Candidate and Person entities.

June 21, 2024

May 14, 2024

  • Clean the PartyContest entity to only include the relevant elements PartyContest.
  • Added updated definitions for ElectionDateStatus enum values, particularly, tentative and changing.

May 1, 2024

  • Clarified the definition for the IsIndependent element for Party.

April 29, 2024

  • Update FeedType enum and FeedLongevity enum to use lower case values in their respective reference pages.

April 17, 2024

  • Added an IsIndependent element to the reference page for Party.

February 12, 2024

  • Added documentation throughout the site for the new Metadata feed.

January 9, 2024

January 3, 2024

July 24, 2023

  • Added Committee type for Political Committees and a corresponding feed type

January 20, 2023

  • Added a Slogan element to the reference page for Party.
  • Added a CampaignSlogan element to the reference page for Candidate.

November 17, 2022

December 30, 2021

  • Added a PartialDate section to the Simple Data Types page, as well as updating some of the table fields.

December 27, 2021

  • Modified content within the CandidateContest section of the Contest page to support only one office per contest, as well as updating some of the XML examples.

October 15, 2021

  • Added ExternalIdentifier section to the reference page for Candidate.

August 20, 2021

February 26, 2021

  • Added an example to the Term reference page on how to represent the tenure of reelected officeholders in an Officeholder feed.

February 24, 2021

  • Added information about party-chair-id to the Party reference material.

February 18, 2021

  • Added a diagram to the CandidatePreElectionStatus reference material that illustrates the timing of statuses.

December 14, 2020

  • Added Guides pages that describe the available feed types. Updated the Reference pages to provide best practices to follow for most entities.