بيانات متحف
معلومة مهمة. جرد المؤسسة الوطنية للمتاحف لشتنبر 2026: 23 متحفاً، لا جميع متاحف المغرب. المواعيد والأسعار من المصدر، وحالة الفتح الحالية غير معروفة.
فهم الإجابة
data: النتائج المطلوبة، في كائن أو قائمة.
meta: مصادر البيانات ورخصتها وتواريخها. تعني null أن القيمة غير معروفة أو غير متاحة.
API v2 هو المسار المرجعي. تبقى مسارات /api/v1 القديمة أسماء بديلة متوافقة مع السلوك المنشور حالياً، بما فيه تقسيم الصفحات؛ لم يُحدد موعد لحذفها.
حقول الإجابة 19
تشير [] إلى كل عنصر في القائمة. تعني null غير معروف أو غير متاح، ولا تعني صفراً. لغة الدليل لا تترجم قيم المصادر.
dataobjectالنتيجة المطلوبة: كائن واحد أو قائمة.
data.idstringمعرّف هذا العنصر في مجموعة البيانات؛ ليس بالضرورة رمزاً رسمياً.
data.nameobjectاسم المورد، وقد يكون موزّعاً حسب اللغة.
data.name.arstringالقيمة بالعربية؛ null عند غياب الترجمة.
data.name.frstringالقيمة بالفرنسية؛ null عند غياب الترجمة.
data.name.enstring | nullالقيمة بالإنجليزية؛ null عند غياب الترجمة.
data.aliasesstring[]أسماء أخرى للمورد نفسه تساعد في التعرّف عليه أو البحث عنه.
data.city_codestringمعرّف الجماعة المرتبطة في التقسيم الجغرافي لـHCP.
data.region_codestringمعرّف الجهة الأم، وهي المستوى الإداري الأول في المغرب.
data.address_frstringالعنوان بالفرنسية الوارد في المصدر.
data.contactobjectمعلومات الاتصال المنشورة في المصدر.
data.contact.phone_e164string | nullالهاتف بالصيغة الدولية الموحدة؛ صحة الصيغة لا تضمن أنه يعمل.
data.contact.phone_statusstringنتيجة فحص الصيغة فقط؛ قد يكون الرقم مشتركاً أو غير متحقق منه.
القيم المقبولة:
"format_valid_unverified""invalid_format""missing"data.contact.social_handlesstring[]معرّفات التواصل الاجتماعي العامة؛ لا تُستنتج المنصة.
data.opening_hours_text_frstringنص أوقات العمل بالفرنسية في الدليل؛ تحقق من الأوقات الحالية لدى المتحف.
data.admission_text_frstringمقتطف رسوم الدخول بالفرنسية؛ راجع الدليل للتخفيضات والإعفاءات.
data.coordinatesnullالإحداثيات غير متوفرة في المصدر المعتمد؛ لا يتم اختلاق موقع.
القيم المقبولة:
nulldata.operating_statusstringحالة التشغيل المعروفة من المصدر؛ لا تضمن الفتح حالياً.
القيم المقبولة:
"unknown"data.quality_flagsstring[]مشاكل جودة معروفة، مثل هاتف مشترك أو الإشارة إلى أشغال.
بنية البيانات
{
"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"
}
}
}
}
}
}
}
}المصادر وتقسيم الصفحات 16
metaobjectسياق النتيجة: المصادر والتواريخ والرخصة وتقسيم الصفحات عند الاقتضاء.
meta.datasetstringاسم مجموعة البيانات الخاصة بالنتيجة أو المصدر.
القيم المقبولة:
"morocco-museums-fnm"meta.totalintegerعدد النتائج المطابقة للمرشحات قبل تقسيم الصفحات؛ وليس حجم هذه الصفحة.
meta.licensestringرخصة إعادة الاستخدام. تعني mixed وجود رخص مختلفة: راجع كل مصدر.
القيم المقبولة:
"ODbL-1.0"meta.retrieved_atstringتاريخ جلب المشروع لملف المصدر؛ وليس تاريخ رصد البيانات.
القيم المقبولة:
"2026-10-14"meta.transformation_versionstringإصدار قواعد تحويل مجموعة البيانات؛ مستقل عن إصدار الواجهة.
القيم المقبولة:
"1.0.0"meta.source_versionstringإصدار أو طبعة وثيقة المصدر.
القيم المقبولة:
"Septembre 2026"meta.scopestringالنطاق الذي تغطيه البيانات؛ لا يعني تغطية شاملة.
meta.limitationsstring[]القيود المعروفة للمصدر أو التغطية؛ اقرأها قبل استخدام البيانات.
meta.sourcesobject[]المصادر المستخدمة لهذه النتيجة مع الجهات المنتجة والرخص.
meta.sources[].datasetstringاسم مجموعة البيانات الخاصة بالنتيجة أو المصدر.
meta.sources[].producerstringالجهة التي تنشر البيانات الأصلية.
meta.sources[].source_urlstringصفحة نشر المصدر أو التعريف ببياناته.
meta.sources[].resource_urlstringرابط الملف أو المورد المستخدم فعلياً.
meta.sources[].licensestringرخصة إعادة الاستخدام. تعني mixed وجود رخص مختلفة: راجع كل مصدر.
القيم المقبولة:
"ODbL-1.0""CC-BY-4.0"meta.sources[].source_updated_atstringآخر تحديث معلن من المصدر؛ وليس تاريخ جلب الملف.
الأخطاء
400: معامل غير صالح أو مفقود.404: المورد غير موجود.
تتضمن الأخطاء error.code وerror.message وerror.request_id.
errorobjectتفاصيل الطلب الفاشل؛ تحل محل data وmeta.
error.codestringرمز ثابت للخطأ، مثل RESOURCE_NOT_FOUND؛ استعمله في منطق التطبيق.
error.messagestringشرح مقروء للخطأ؛ استعمل code في منطق التطبيق.
error.request_idstringمعرّف هذا الطلب، يفيد عند الإبلاغ عن مشكلة.