De 2018 à 2025, une partie des informations sur les horaires avait été déléguée à un module externe (apiHours) qui nécessitait l’appel à des API spécifiques.
Depuis juin 2025, la consultation des horaires « riches » se fait directement sur le noeud ouverture.periodesOuvertures[].horaires
.
L’usage des données horaires riches peut être complexe : sauf besoins spécifiques (présentation en tableaux, filtres de recherche…) il est recommandé d’utiliser ouverture.periodeEnClair
, qui exploite les données riches pour les restituer dans les différentes langues disponibles. Dans la plupart des cas, son usage notamment sur les sites Internet est suffisant, et surtout plus rapide, simple et fiable que l’exploitation des données riches.
Le format général est le suivant :
"periodesOuvertures": [
{
"identifiant": 34492032,
"dateDebut": "2026-01-01",
"dateFin": "2026-06-30",
"nom": "Hors périodes de vacances d'été",
"type": "OUVERTURE_TOUS_LES_JOURS",
"tousLesAns": false,
"identifiantTechnique": 34492032,
"horaires": [
{
"id": 511,
"type": {
"elementReferenceType": "HoraireType",
"id": 7457,
"libelleFr": "Ouverture",
"ordre": 1,
"description": "Horaires d'ouverture"
},
"timePeriods": [
{
"closed": false,
"weekdays": ["THU","WED","FRI","MON","TUE"],
"timeFrames": [
{"startTime": "10:00","endTime": "12:00"},
{"startTime": "14:00","endTime": "18:00"}
]
},
{
"closed": false,
"weekdays": ["SAT","SUN"],
"timeFrames": [
{"startTime": "08:00","endTime": "20:00"}
]
},
{
"closed": true,
"weekdays": ["HOL"]
}
]
},
{
"type": {
"elementReferenceType": "HoraireType",
"id": 7460,
"libelleFr": "Visite guidée",
"ordre": 14,
"description": "Horaires de visite guidée"
},
"timePeriods": [
{
"closed": false,
"weekdays": ["THU","WED","FRI","MON","TUE"],
"timeFrames": [
{"startTime": "15:00","endTime": "17:00","recurrence": "00:30"}
]
},
{
"closed": false,
"weekdays": ["SAT","SUN"],
"timeFrames": [
{"startTime": "10:00","endTime": "18:00","recurrence": "00:30"}
]
}
]
}
]
},
{
"identifiant": 34492034,
"dateDebut": "2026-09-01",
"dateFin": "2026-12-31",
"sourceHoraireId": 34492033,
"type": "OUVERTURE_TOUS_LES_JOURS",
"tousLesAns": false,
"identifiantTechnique": 34492034,
"horaires": [...]
}
]
Détail des noeuds
ouverture.periodesOuvertures[].nom (string)
Indique que les horaires de cette période sont réutilisable (par l’usage de son identifiant dans ouverture.periodesOuvertures[].sourceHoraireId). Permet aux utilisateurs de ne saisir qu’une seule fois des horaires qui seraient utilisés sur plusieurs périodes (vacances scolaires, haute saison…).
ouverture.periodesOuvertures[].sourceHoraireId (int)
En utilisant l’identifiant d’une période qui a un nom, on peut réutiliser ses horaires, et éviter ainsi une saisie multiple d’horaires identiques. Bien entendu les horaires de cette période ne seront pas modifiables directement : seule la modification de la période d’origine est possible.
ouverture.periodesOuvertures[].horaires[].type (elementReference)
Il s’agit du type d’horaires : ouverture, visite guidée, petit déjeuner…
ouverture.periodesOuvertures[].horaires[].timePeriods (liste)
Comprend le détail des horaires (timeFrames) pour une liste de jours (weekdays)
ouverture.periodesOuvertures[].horaires[].timePeriods[].closed (liste)
Indique sur l’offre est considérée comme fermée pour la liste de weekdays associés. Cette information permet de préciser les jours de fermeture : cependant on considère aussi que l’absence de certains weekdays dans l’ensemble des timePeriods indique que l’offre n’est pas ouverte sur ces jours absents.
L’indication « closed »:true permet donc d’insister sur ces fermetures, notamment en ajoutant l’information de façon explicite dans les ouvertures en clair (exemple : Fermé le mercredi et les jours fériés)
ouverture.periodesOuvertures[].horaires[].timePeriods[].wekdays[] (liste enum)
MON,TUE,WED,THU,FRI,SAT,HOL
La liste des jours en anglais : noter la présence de HOL pour Holiday qui permet de préciser des horaires pour les jours fériés, si nécessaire.
ouverture.periodesOuvertures[].horaires[].timePeriods[].timeFrames[] (liste)
Plage horaire, pouvant contenir 3 sous informations startTime, endTime & recurrence.
ouverture.periodesOuvertures[].horaires[].timePeriods[].timeFrames[].startTime
ouverture.periodesOuvertures[].horaires[].timePeriods[].timeFrames[].endTime
(time)
Comme leur nom le laisse entendre, il s’agit d’une plage horaire pour les jours du type d’horaires concernés.
Noter que l’un, l’autre ou les deux peuvent être présents.
ouverture.periodesOuvertures[].horaires[].timePeriods[].timeFrames[].recurrence
Indique pour certains types d’horaires (visites guidées…) s’il y a une répétition toutes les X minutes (par exemple, visite guidée toutes les 20 minutes de 9h à 18h). Sa présence est bien sûr facultative.