Un musée
À savoir. Inventaire FNM de septembre 2026 : 23 musées, pas l’ensemble des musées du Maroc. Horaires et tarifs issus des sources ; ouverture actuelle inconnue.
Comprendre la réponse
data: Les résultats demandés, sous forme d’objet ou de liste.
meta: Sources, licence et dates du jeu de données. null signifie une valeur inconnue ou indisponible.
API v2 est le chemin de référence. Les anciens chemins /api/v1 restent des alias de compatibilité du comportement actuellement publié, pagination comprise ; aucune date de suppression n’est fixée.
Champs renvoyés 19
[] désigne chaque élément d’une liste. null signifie inconnu ou indisponible, jamais zéro. La langue du guide ne traduit pas les valeurs des sources.
dataobjectRésultat demandé : objet unique ou liste.
data.idstringIdentifiant de cet élément dans le jeu de données ; pas nécessairement un code officiel.
data.nameobjectNom de la ressource, éventuellement réparti par langue.
data.name.arstringValeur en arabe ; null si aucune traduction n’est fournie.
data.name.frstringValeur en français ; null si aucune traduction n’est fournie.
data.name.enstring | nullValeur en anglais ; null si aucune traduction n’est fournie.
data.aliasesstring[]Autres noms de la même ressource, utiles pour la reconnaître ou la rechercher.
data.city_codestringIdentifiant de la commune de rattachement dans la géographie HCP.
data.region_codestringIdentifiant de la région parente, premier niveau administratif du Maroc.
data.address_frstringAdresse en français fournie par la source.
data.contactobjectCoordonnées de contact publiées par la source.
data.contact.phone_e164string | nullTéléphone normalisé au format international ; le format ne garantit pas qu’il fonctionne.
data.contact.phone_statusstringRésultat de validation du format seulement ; le numéro peut être partagé ou non vérifié.
Valeurs acceptées:
"format_valid_unverified""invalid_format""missing"data.contact.social_handlesstring[]Identifiants sociaux publics ; la plateforme n’est pas déduite.
data.opening_hours_text_frstringHoraires français du guide source ; vérifiez les horaires actuels auprès du musée.
data.admission_text_frstringExtrait français des tarifs ; consultez le guide pour les réductions et gratuités.
data.coordinatesnullCoordonnées indisponibles dans la source admise ; aucune position n’est inventée.
Valeurs acceptées:
nulldata.operating_statusstringÉtat d’exploitation connu par la source ; ne garantit pas l’ouverture actuelle.
Valeurs acceptées:
"unknown"data.quality_flagsstring[]Problèmes de qualité identifiés, par exemple téléphone partagé ou travaux mentionnés.
Structure des données
{
"type": "object",
"additionalProperties": false,
"required": [
"data",
"meta"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"aliases",
"city_code",
"region_code",
"address_fr",
"contact",
"opening_hours_text_fr",
"admission_text_fr",
"coordinates",
"operating_status",
"quality_flags"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "^fnm-[a-z0-9-]+$",
"description": "Stable internal MoroccoAPI ID, not an official FNM code."
},
"name": {
"type": "object",
"additionalProperties": false,
"required": [
"ar",
"fr",
"en"
],
"properties": {
"ar": {
"type": "string",
"minLength": 1
},
"fr": {
"type": "string",
"minLength": 1
},
"en": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
}
}
},
"aliases": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "French heading from the official guide, when different from the XLSX name."
},
"city_code": {
"type": "string",
"minLength": 1,
"description": "Commune slug from the HCP geography snapshot."
},
"region_code": {
"type": "string",
"minLength": 1
},
"address_fr": {
"type": "string",
"minLength": 1
},
"contact": {
"type": "object",
"additionalProperties": false,
"required": [
"phone_e164",
"phone_status",
"social_handles"
],
"properties": {
"phone_e164": {
"anyOf": [
{
"type": "string",
"pattern": "^\\+212[5-7]\\d{8}$"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"phone_status": {
"type": "string",
"enum": [
"format_valid_unverified",
"invalid_format",
"missing"
],
"description": "Format validation only. Numbers may be shared and are not operationally verified."
},
"social_handles": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Public visitor handles; platform is not inferred."
}
}
},
"opening_hours_text_fr": {
"type": "string",
"minLength": 1,
"description": "Source visitor schedule; not a current opening guarantee."
},
"admission_text_fr": {
"type": "string",
"minLength": 1,
"description": "Source tariff excerpt. Consult the guide for free-entry/reduction conditions."
},
"coordinates": {
"type": "string",
"description": "No coordinates in the admitted source.",
"nullable": true,
"enum": [
null
]
},
"operating_status": {
"type": "string",
"enum": [
"unknown"
]
},
"quality_flags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Known source issues, including shared/missing phones and works mentions."
}
}
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"total",
"license",
"retrieved_at",
"transformation_version",
"source_version",
"scope",
"limitations",
"sources"
],
"properties": {
"dataset": {
"enum": [
"morocco-museums-fnm"
]
},
"total": {
"type": "integer",
"minimum": 0
},
"license": {
"enum": [
"ODbL-1.0"
]
},
"retrieved_at": {
"enum": [
"2026-10-14"
]
},
"transformation_version": {
"enum": [
"1.0.0"
]
},
"source_version": {
"enum": [
"Septembre 2026"
]
},
"scope": {
"type": "string",
"minLength": 1
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"sources": {
"type": "array",
"minItems": 3,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"producer",
"source_url",
"resource_url",
"license",
"source_updated_at"
],
"properties": {
"dataset": {
"type": "string",
"minLength": 1
},
"producer": {
"type": "string",
"minLength": 1
},
"source_url": {
"type": "string",
"format": "uri"
},
"resource_url": {
"type": "string",
"format": "uri"
},
"license": {
"type": "string",
"enum": [
"ODbL-1.0",
"CC-BY-4.0"
]
},
"source_updated_at": {
"type": "string",
"format": "date"
}
}
}
}
}
}
}
}Sources et pagination 16
metaobjectContexte du résultat : sources, dates, licence et pagination si applicable.
meta.datasetstringNom du jeu de données auquel appartient le résultat ou la source.
Valeurs acceptées:
"morocco-museums-fnm"meta.totalintegerNombre de résultats correspondant aux filtres, avant pagination ; pas la taille de cette page.
meta.licensestringLicence de réutilisation. mixed signifie des licences différentes : consultez chaque source.
Valeurs acceptées:
"ODbL-1.0"meta.retrieved_atstringDate de récupération du fichier source par le projet ; pas la date des observations.
Valeurs acceptées:
"2026-10-14"meta.transformation_versionstringVersion des règles de conversion du jeu de données ; distincte de l’API.
Valeurs acceptées:
"1.0.0"meta.source_versionstringVersion ou édition du document source.
Valeurs acceptées:
"Septembre 2026"meta.scopestringPérimètre couvert par le jeu de données ; ne présume pas une couverture universelle.
meta.limitationsstring[]Limites connues de la source ou de la couverture ; à lire avant d’utiliser les données.
meta.sourcesobject[]Sources utilisées pour ce résultat, avec leurs producteurs et licences.
meta.sources[].datasetstringNom du jeu de données auquel appartient le résultat ou la source.
meta.sources[].producerstringOrganisme qui publie la donnée originale.
meta.sources[].source_urlstringPage de présentation ou de publication de la source.
meta.sources[].resource_urlstringLien vers le fichier ou la ressource utilisée.
meta.sources[].licensestringLicence de réutilisation. mixed signifie des licences différentes : consultez chaque source.
Valeurs acceptées:
"ODbL-1.0""CC-BY-4.0"meta.sources[].source_updated_atstringDernière mise à jour annoncée par la source ; pas la date de récupération.
Erreurs
400: Paramètre invalide ou manquant.404: Ressource introuvable.
Les erreurs renvoient error.code, error.message et error.request_id.
errorobjectDétails d’une requête échouée ; remplace data et meta.
error.codestringCode stable de l’erreur, par exemple RESOURCE_NOT_FOUND ; à utiliser dans votre logique.
error.messagestringExplication lisible de l’erreur ; utilisez code pour la logique de votre application.
error.request_idstringIdentifiant du traitement de cette requête, utile pour retrouver un problème.