Projet Votelec
Introduction
API interne JSON pour la cartographie
04 juillet 2023
Ce document décrit la structure de l’API interne JSON utilisée par la cartographie de Votelec. Il a été conçu afin que les données des résultats publiés par le canton de Vaud puissent être utilisées facilement par d’autres personnes (notamment des journalistes de données).
Avertissements
Les fichiers JSON décrits dans ce document n’ont pas pour vocation de faire partie d’une API publique. La documentation ci-dessous est donc principalement une description de ce que ces fichiers représentent dans la réalité et non une documentation technique. De ce fait, la structure de ces fichiers est susceptible d’être modifiés sans préavis, ni versioning. Néanmoins, les éléments principaux ne changent quasiment pas.
Structure des URLs
Template de base : https://www.elections.vd.ch/votelec/<version de l’application>/data/<identification du scrutin/de l’échéance>/<nom du fichier>
Version de l’application : « appX », ou X est la version de l’application de cartographie utilisée lors de la publication.
Exemple : « app18 » pour les résultats de la votation fédérale du 25 septembre 2022.
Identification du scrutin/de l’échéance : La dénomination du scrutin se fait par concaténation de la dénomination courte du type de scrutin (voir Types de scrutins), et de la date d’échéance du scrutin désiré au format année/mois/date, le tout sans séparation.
Exemple : Pour la votation fédérale du 25 septembre 2022 : CHVO20220925
Cas particulier : dans le cas du fichier « echeance.json », il est inutile de préciser le type de scrutin (voir première URL d’exemple ci-dessous).
Nom du fichier : Nom du fichier JSON désiré. (Voir liste dans Structure des fichiers)
Exemple d’URLs complètes :
https://www.elections.vd.ch/votelec/app18/data/20220925/echeance.json
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/scrutin.json
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/countingStatus.json
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/results.json
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/vd_geo_data.json
API interne JSON pour la cartographie
04 juillet 2023
Fréquence de mise à jour
Les fichiers sont mis à jour toutes les 5 minutes durant le dépouillement, à partir de midi. Les fichiers ne sont pas mis à jour s’il n’y a pas eu de modifications ou de nouvelles données. Il peut arriver que la publication des fichiers prenne un peu plus de temps, notamment durant les grandes échéances électorales. Dans ce cas, la mise à jour peut arriver dans les minutes qui suivent.
Structure des fichiers
Les données des résultats de la cartographie de Votelec se composent des 4 fichiers suivants :
- echeance.json : données relatives à l’échéance électorales.
- scrutin.json : données de définition d’un scrutin.
- countingStatus.json : données d’avancement du dépouillement des bureaux.
- results.json : résultats des votations/élections.
- vd_geo_data.json : données utilisées pour la créer la carte.
Note : Dans le cas où seuls les définitions et les résultats des scrutins vous intéressent, le contenu des fichiers « scrutin.json » et « results.json » devrait vous suffire.
Fichiers
1. scrutin.json
Description
Ce fichier contient les détails d’un scrutin particulier. Il définit tous les éléments nécessaires à la définition de ce dernier, à savoir les objets de vote pour les votations ou la liste des participants dans le cas d’une élection.
Projet Votelec
Contenu
a. Racine
API interne JSON pour la cartographie
04 juillet 2023
Clé Description
technicalKey Usage interne
date
Timestamp du jour du scrutin à minuit. (Attention : heure GMT +2)
niveauLegal Domaine d’influence du scrutin. Les 3 niveaux supportés par Votelec sont : fédéral (FEDERAL), cantonal (CANTONAL) et communal (COMMUNAL).
scrutinType Définit s’il s’agit d’une élection (ELECTION), ou d’une votation (VOTATION) objects Tableau des différentes votations du scrutin. Chaque objet représente une votation et contient les détails de ce dernier. (voir Objets de votations)
Vide pour une élection. superElection Informations communes à tous les scrutins du même type pour une même échéance, dont le type (voir Types de scrutins dans les annexes) et le tour. Valeurs possibles pour le tour : premier tour (FIRST), second tour (SECOND) et « NOT_APPLICABLE » pour les scrutins à un seul tour.
elections
Vide pour les votations.
Contient la liste des élections prévues lors de ce scrutin. Ces dernières sont triées par code OFS dans le cas d’une élection communale ou par le préfixe « VD » dans le cas d’une élection de niveau cantonal ou fédéral.
Vide pour les votations.
detailedScrutinType Code de type de scrutin (voir Types de scrutins dans les annexes) config Configurations et d’informations sur le scrutin. (Principalement utilisées pour la logique d’affichage.). Usage interne.
b. Objets de votations
Clé Description title
Titre de l’objet tel que présenté dans les documents officiels shortName Dénomination courte de l’objet pour référence objectType Le type de votation : La votation simple (VOTATION_SIMPLE), la votation complexe (VOTATION_COMPLEXE), et la votation à choix multiple (VOTATION_CHOIX).
questions Liste des questions de la votation. Son contenu diffère en fonction du type de contenu. Il contient soit la question d’une votation simple, soit les énoncés de l’initiative et de son contre-projet dans le cadre d’une votation complexe, ou encore les choix A et B de la votation par choix. (voir Type de question dans les votations)
c. Elections
Clé Description
seats
Nombre de sièges à pourvoir electionLists Liste des groupes électoraux concernés par l’élection. (voir Liste électorale) candidates Liste des candidats concernés par l’élection. (voir Candidat)
additionalProperties Usage interne
Projet Votelec
API interne JSON pour la cartographie
04 juillet 2023
d. Liste électorale
Clé Description
id Usage interne
shortName Dénomination courte du groupe politique (ex. UDC)
longName Nom complet du groupe politique (ex. Union Démocratique du Centre)
groupId Identifiant du groupe de liste. Un groupe de liste permet de regrouper plusieurs listes qui représentent le même parti politique. Ceci est utilisé pour regrouper les listes dans la vue « hémicycle ». hemicycleOrder L’ordre relatif dans la vue « hémicycle ». Usage interne.
e. Candidat
Clé Description
id Usage interne
fullName Nom légal du candidat lists Liste des identifiants de listes dans lesquels le candidat apparaît Fréquence de publication
Lors de la préparation du scrutin uniquement. Ce fichier n’est mis à jour que rarement, si la définition du scrutin ou d’autres scrutin de l’échéance changeait.
Exemple
Votation : https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/scrutin.json
Élection : https://www.elections.vd.ch/votelec/app16/data/VDGC20220320/scrutin.json
API interne JSON pour la cartographie
04 juillet 2023
2. results.json
Description
Contient les résultats détaillés des scrutins de l’échéance. Pour les élections, contient également les répartitions entre listes électorales et candidats.
Contenu
a. Racine Clé Description generated Usage interne publishStatus Toujours « PUBLIC ». Contenu invalide si différent. countingStatus État du décompte général (pour l’échéance). Tant qu’aucune donnée de résultat n’a été publié, vaut « NO_RESULT », puis lorsque les décomptes commencent, passe à « COUNTING ». Une fois tous les scrutins finalisés, passe à « COMPLETED ». Les résultats doivent être considérés comme incomplet tant que le statut n’est pas « COMPLETED ». counting Ratio de décompte. De 0 à 1, ou 0 correspond à aucun bulletin décompté (statut « NO_RESULT ») et 1 la fin du comptage (statut « COMPLETED »).
Ratio= nombre d ’ électeurs des communes qui ont terminé leur dépouillement nombre total des électeurs inscrits objects Liste des objets de votation du scrutin. Les données se trouvent sous « questions » et sont listées par type de votation. (Voir Type de question dans les votations) election Détails des résultats de l’élection
b. Question
Clé Description colors Usage interne participationColors Usage interne ofs Liste des résultats par portées (communes & districts). Triée par code OFS. (voir Détails des résultats de votation).
c. Détails des résultats de votation Clé Description outcome Résultat final de l’objet. (voir Résultat final d’un scrutin) general Bloc contenant des compteurs généraux :
inscrits : Nombre d’électeurs inscrits
rentres : Nombre de bulletins rentrés
blancs : Nombre de bulletins blancs
nuls : Nombre de bulletins nuls
valables : Nombre de bulletins valables (les bulletins blancs sont considérés comme valables dans la plupart des élections majoritaires)
oui Nombre de voix pour le oui (ou pour le choix A, dans le cas d’une votation par choix)
non Nombre de voix pour le non (ou pour le choix B, dans le cas d’une votation par choix)
sansReponse Nombre de voix sans réponse dans le cas d’une votation complexe.
Projet Votelec
API interne JSON pour la cartographie
04 juillet 2023
d. Élection
Clé Description colors Usage interne
votes
Liste des résultats par portées (communes & districts). Triée par code OFS. (voir Détails des résultats de l’élection).
e. Détails des résultats de l’élection
Clé Description general
Bloc contenant le nombre de voix :
inscrits : Nombre d’électeurs inscrits
rentres : Nombre de bulletins rentrés
blancs : Nombre de bulletins blancs
nuls : Nombre de bulletins nuls
valables : Nombre de bulletins valables (les bulletins blancs sont considérés comme valables dans la plupart des élections majoritaires)
listes Liste des résultats des listes électorales triés par numéro de listes.
Contient :
votes : le nombre de bulletin ayant donné au moins un suffrage à un candidat de la liste.
suffrages : le nombre de voix données aux candidats de la liste.
seats : le nombre de sièges remportés par la liste candidats Liste des résultats des candidats triés par numéro de candidat officiel.
Contient :
votes : Nombre de suffrages accordés au candidat
outcome : Résultat final du scrutin pour ce candidat (voir Résultat final d’un scrutin)
rank : le rang, utilisé pour distinguer les cas à égalité après tirage au sort resultsDone « true » si le décompte des voix est terminé, sinon « false ».
Fréquence de publication
Toutes les 5 minutes durant le dépouillement à partir de midi.
Exemple
Votation :
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/results.json
https://www.elections.vd.ch/votelec/app18/index.html?
id=CHVO20220925#v=participation&o=1&m=moreDetails
Election :
https://www.elections.vd.ch/votelec/app16/data/VDGC20220320/results.json
https://www.elections.vd.ch/votelec/app16/index.html?
id=VDGC20220320#v=hemicycle&m=moreDetails&ad=2225
API interne JSON pour la cartographie 04 juillet 2023
3. countingStatus.json
Description
Ce fichier sert à transmettre l’état du dépouillement des bulletins. Il contient entre autres la liste des communes ayant finalisé leur procédure de dépouillement, et l’état de celles en train de l’effectuer.
Contenu
a. Racine
Clé Description
kind
countingStatus
Type de décompte. Vaut « default » dans le cadre d’un décompte classique, ou « gc » s’il s’agit d’une élection du grand conseil. La structure diffère selon l’un ou l’autre.
L’état du décompte au niveau du canton (voir Statut des décomptes).
lastValidCommunePVs (Décompte classique uniquement) Liste des 10 dernières communes (voir Commune) à avoir finalisé leur décompte.
invalidBureauPVs (Décompte classique uniquement) Liste des bureaux (voir Bureau) n’ayant pas encore finalisé leur décompte.
validBureauPVs (Décompte classique uniquement) Liste des bureaux (voir Bureau) ayant fini leur décompte.
countingStatusByDistrictId (Grand conseil uniquement) Liste des décomptes des différents arrondissements et sous-arrondissements (voir Statut des décomptes) listé par code OFS (les sous-arrondissements n’ayant pas de code OFS, ils utilisent un identifiant choisi arbitrairement).
b. Statut des décomptes
Clé Description rows Liste des décomptes (voir Décompte) se situant au niveau inférieur. S’il s’agit de l’état du canton, les décomptes des arrondissements seront listés ; dans le cas d’un arrondissement, les communes seront listées… total Total des statuts des décomptes listés dans le champ rows. (Voir Décompte)
c. Bureau
Clé Description commune Code OFS la commune à laquelle appartient ce bureau de vote. bureau Nom du bureau de vote. validation Date à laquelle le procès-verbal a été finalisé et validé au niveau du bureau.
d. Commune
Clé Description id Code OFS de la commune name Nom de la commune validation Date à laquelle le procès-verbal a été finalisé et validé au niveau de la commune.
API interne JSON pour la cartographie
04 juillet 2023
e. Décompte
Clé Description
id (Absent s’il s’agit d’un total) Code OFS de la portée (district ou commune) name (Absent s’il s’agit d’un total) Nom de la portée (district ou commune) counting Nombre de bureaux en cours de décompte done
existing
Nombre de bureaux ayant fini le décompte
Total des bureaux
Fréquence de publication
Toutes les 5 minutes durant le dépouillement à partir de midi.
Exemple
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/countingStatus.json
https://www.elections.vd.ch/votelec/app18/index.html?
id=CHVO20220925#v=participation&m=countingState
Projet Votelec
4. echeance.json
Description
API interne JSON pour la cartographie
04 juillet 2023
Décrit les informations de l’échéance ainsi que la liste des scrutins organisés le jour en question. Contenu
a. Racine
Clé Description scrutins Liste de scrutins (Voir Scrutin) technicalKey Usage interne date Date du jour de l’échéance. (Format « année-mois-jour », ex. 2022-03-20)
b. Scrutin
Clé Description id Usage interne title Nom du scrutin
type Code de type de scrutin (voir Types de scrutins dans les annexes) order Ordre d’affichage
Fréquence de publication
Toutes les 5 minutes durant le dépouillement à partir de midi. En général, ce fichier n’est pas modifié.
Exemple
https://www.elections.vd.ch/votelec/app16/data/20220320/echeance.json
API interne JSON pour la cartographie 04 juillet 2023
5. vd_geo_data.json
Description
Fichier contenant les données pour afficher la carte du canton. Ce fichier contient principalement des données techniques uniquement utilisées par l’application Votelec. Le format GeoJson est utilisé. À noter que ce fichier peut être différent selon le type de scrutin et l’état des fusions de commune à l’échéance en cours.
Contenu
a. Racine
Clé Description type
districts
Usage interne
Listes des districts du canton de Vaud au format GeoJson. Les informations se trouvent sous « features[*]properties » (voir Property). L’élément
« features.type » est à usage interne. cities Listes des communes du canton de Vaud au format GeoJson. Les informations se trouvent sous « features[*]properties » (voir Property). L’élément « features.type » est à usage interne. lakes Liste des lacs du canton de Vaud au format GeoJson. Les informations se trouvent sous « features[*]properties » (voir Property). L’élément
« features.type » est à usage interne.
technicalKey Usage interne
b. Property
Clé Description
name
Nom du district, de la commune ou du lac id Code OFS de l’élément districtId (Communes uniquement) Code OFS du district parent. label (Districts uniquement) Informations de cartographie. Usage interne. labelX (Districts uniquement) Informations de cartographie. Usage interne. labelY (Districts uniquement) Informations de cartographie. Usage interne. portee Code du niveau du domaine d’influence (voir Domaine d’influence dans les annexes)
Fréquence de publication
Lors de la préparation du scrutin uniquement. Ce fichier n’est mis à jour qu’en circonstances exceptionnelles.
Exemple
https://www.elections.vd.ch/votelec/app18/data/CHVO20220925/vd_geo_data.json
API interne JSON pour la cartographie
04 juillet 2023
Annexes
1. Types de scrutins
Identifiant
VOTATION_FEDERALE
VOTATION_CANTONALE
VOTATION_COMMUNALE
ELECTION_CONSEIL_NATIONAL
ELECTION_CONSEIL_DES_ETATS
ELECTION_CONSEIL_D_ETAT
ELECTION_GRAND_CONSEIL
ELECTION_CONSEIL_COMMUNAL_RP
ELECTION_MUNICIPALITE
ELECTION_SYNDIC
ELECTION_CONSEIL_COMMUNAL_SUPPLEANTS
ELECTION_CONSEIL_COMMUNAL_MAJ
2. Domaine d’influence
Description
Dénom. courte
Votation fédérale CHVO
Votation cantonale VDVO
Votation communale COVO
Election au Conseil national CHCN
Election au Conseil des Etats CHCE
Election du Conseil d'Etat VDCE
Election du Grand Conseil VDGC
Election du Conseil communal CORP
Election communale-Municipalité COMU
Election communale-Syndic COSY
Election communale de suppléants au Conseil communal COSU
Election communale-Conseil Communal MAJ COMA
Circonscription (zone, territoire en règle générale géographiquement cohérente) dans laquelle s’applique le droit de vote ainsi que le droit d’élire actif et passif d’une personne.
Clé Description COM
Niveau communal
SARR Niveau du sous-arrondissement
ARR Niveau de l’arrondissement
FOREIGN Code spécial permettant de mettre en évidence les Suisses du canton de Vaud vivant à l’étranger.
3. Type de question dans les votations
Clé Description question
Les questions sont utilisées pour les votations simples (réponse oui / non) ainsi que pour les votations par choix (A / B).
Note : le type de question « choix » n’a pour l’instant jamais été utilisé, mais il est prévu par la loi.
initiative Utilisé lors de votation complexe. Question comptabilisant le nombre de oui / non sur l’acceptation de l’initiative.
contre-projet Utilisé lors de votation complexe. Question comptabilisant le nombre de oui / non sur l’acceptation du contre-projet.
preference Utilisé lors de votation complexe. Question comptabilisant la préférence des électeurs pour l’initiative ou le contre-projet.
Projet Votelec
API interne JSON pour la cartographie
04 juillet 2023
4. Résultat final d’un scrutin
Clé Description
UNAVAILABLE Résultat indisponible (décompte des voix incomplet)
ACCEPTED Object de la votation simple accepté
REJECTED Object de la votation simple refusé
INITIATIVE Initiative de la votation complexe accepté
CONTRE_PROJET Contre-projet de la votation complexe accepté
EGALITE Égalité entre :
Les oui et les non de la votation simple
Les choix A et B de la votation par choix
L’initiative et le contre-projet de la votation complexe
CHOIX_A Choix A de la votation par choix accepté
CHOIX_B Choix A de la votation par choix accepté
ELU Candidat élu
NON_ELU Candidat non-élu