{"openapi":"3.1.0","paths":{"/health":{"get":{"description":"Returns the public API health status, current environment, uptime, Redis availability, database read-model availability, and dataset release availability.","operationId":"getHealth","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}}],"responses":{"200":{"description":"Get API health","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse_Output"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get API health","tags":["Health"]}},"/health/live":{"get":{"description":"Returns whether the API process is alive without checking external services.","operationId":"getLiveness","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}}],"responses":{"200":{"description":"Get liveness health","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LivenessResponse_Output"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get liveness health","tags":["Health"]}},"/health/ready":{"get":{"description":"Returns whether the API runtime dependencies, database read model, and dataset releases are ready.","operationId":"getReadiness","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}}],"responses":{"200":{"description":"Get readiness health","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadinessResponse_Output"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get readiness health","tags":["Health"]}},"/api/v1/datasets":{"get":{"description":"Returns OpenSyria dataset metadata, repository names, release status, and currently available public API paths.","operationId":"listDatasets","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against dataset ID, slug, names, descriptions, category, repository, status, API endpoints, version, and updated timestamp.","schema":{"example":"geography"}},{"name":"order","required":false,"in":"query","description":"Sort order by English dataset name. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"List available datasets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetSummaryListResponse_Output"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List available datasets","tags":["Dataset Discovery"]}},"/api/v1/releases":{"get":{"description":"Returns dataset release metadata, source repositories, planned manifest paths, and artifact information when published.","operationId":"listReleases","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against release ID, version, status, timestamps, dataset metadata, artifacts, and notes.","schema":{"example":"geography"}},{"name":"order","required":false,"in":"query","description":"Sort order by release ID. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"List dataset releases","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseSummaryListResponse_Output"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List dataset releases","tags":["Releases"]}},"/api/v1/geography/governorates":{"get":{"description":"Returns governorate records from the released geography dataset. The endpoint is available before the first data release and returns an empty list until a verified data-geography release is published.","operationId":"listGovernorates","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against ID, names, aliases, ISO code, external IDs, source IDs, and source status.","schema":{"example":"damascus"}},{"name":"order","required":false,"in":"query","description":"Sort order by English display name. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"sourceStatus","required":false,"in":"query","description":"Filter records by source review or release status. pending_release=pending release, seed=seed data, released=released data, deprecated=deprecated data.","schema":{"enum":["pending_release","seed","released","deprecated"],"type":"string"}}],"responses":{"200":{"description":"List governorates\n\nList governorates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorateListResponse"},"example":{"success":true,"status":200,"message":"Governorates fetched successfully","data":{"items":[{"id":"sy-damascus","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq","language":"en","type":"alternate_spelling"}],"iso31662":"SY-DI","centroid":{"latitude":33.5138,"longitude":36.2765},"area":{"value":105,"unit":"km2","sourceIds":["fixture-source"]},"population":{"value":1796000,"year":2016,"sourceIds":["fixture-source"]},"externalIds":{"geonames":"170654","ochaPcode":"C1000"},"sourceIds":["fixture-source"],"sourceStatus":"released"}],"pagination":{"limit":10,"currentPage":1,"pageRecords":1,"totalRecords":1,"totalPages":1,"nextPage":null,"previousPage":null},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"}},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List governorates","tags":["Geography"]}},"/api/v1/geography/governorates/{governorateId}":{"get":{"description":"Returns one released governorate record with its dataset release context and source attribution.","operationId":"getGovernorate","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"governorateId","required":true,"in":"path","description":"Stable OpenSyria governorate ID.","schema":{"example":"sy-damascus"}}],"responses":{"200":{"description":"Get governorate details\n\nGet governorate details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorateDetailResponse"},"example":{"success":true,"status":200,"message":"Governorate fetched successfully","data":{"item":{"id":"sy-damascus","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq","language":"en","type":"alternate_spelling"}],"iso31662":"SY-DI","centroid":{"latitude":33.5138,"longitude":36.2765},"area":{"value":105,"unit":"km2","sourceIds":["fixture-source"]},"population":{"value":1796000,"year":2016,"sourceIds":["fixture-source"]},"externalIds":{"geonames":"170654","ochaPcode":"C1000"},"sourceIds":["fixture-source"],"sourceStatus":"released"},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"},"sources":[{"id":"geonames-sy","title":"GeoNames Syrian Arab Republic Gazetteer Extract","url":"https://download.geonames.org/export/dump/SY.zip","license":"CC BY 4.0","accessedAt":null,"fields":["names","alternateNames","featureCodes","coordinates"]}]},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get governorate details","tags":["Geography"]}},"/api/v1/geography/districts":{"get":{"description":"Returns district records from the released geography dataset. Results can be filtered by governorate ID for nested administrative views.","operationId":"listDistricts","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against ID, names, aliases, governorate ID, external IDs, source IDs, and source status.","schema":{"example":"damascus"}},{"name":"order","required":false,"in":"query","description":"Sort order by English display name. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"governorateId","required":false,"in":"query","description":"Filter districts by stable OpenSyria governorate ID.","schema":{"example":"sy-damascus"}},{"name":"sourceStatus","required":false,"in":"query","description":"Filter records by source review or release status. pending_release=pending release, seed=seed data, released=released data, deprecated=deprecated data.","schema":{"enum":["pending_release","seed","released","deprecated"],"type":"string"}}],"responses":{"200":{"description":"List districts\n\nList districts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistrictListResponse"},"example":{"success":true,"status":200,"message":"Districts fetched successfully","data":{"items":[{"id":"sy-damascus-damascus","governorateId":"sy-damascus","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq District","language":"en","type":"alternate_spelling"}],"centroid":{"latitude":33.5138,"longitude":36.2765},"area":{"value":105,"unit":"km2","sourceIds":["fixture-source"]},"population":{"value":1552161,"year":2004,"sourceIds":["fixture-source"]},"externalIds":{"geonames":"170654","ochaPcode":"C1000001"},"sourceIds":["fixture-source"],"sourceStatus":"released"}],"pagination":{"limit":10,"currentPage":1,"pageRecords":1,"totalRecords":1,"totalPages":1,"nextPage":null,"previousPage":null},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"}},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List districts","tags":["Geography"]}},"/api/v1/geography/districts/{districtId}":{"get":{"description":"Returns one released district record with dataset release context and sources.","operationId":"getDistrict","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"districtId","required":true,"in":"path","description":"Stable OpenSyria district ID.","schema":{"example":"sy-damascus-damascus"}}],"responses":{"200":{"description":"Get district details\n\nGet district details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistrictDetailResponse"},"example":{"success":true,"status":200,"message":"District fetched successfully","data":{"item":{"id":"sy-damascus-damascus","governorateId":"sy-damascus","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq District","language":"en","type":"alternate_spelling"}],"centroid":{"latitude":33.5138,"longitude":36.2765},"area":{"value":105,"unit":"km2","sourceIds":["fixture-source"]},"population":{"value":1552161,"year":2004,"sourceIds":["fixture-source"]},"externalIds":{"geonames":"170654","ochaPcode":"C1000001"},"sourceIds":["fixture-source"],"sourceStatus":"released"},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"},"sources":[{"id":"geonames-sy","title":"GeoNames Syrian Arab Republic Gazetteer Extract","url":"https://download.geonames.org/export/dump/SY.zip","license":"CC BY 4.0","accessedAt":null,"fields":["names","alternateNames","featureCodes","coordinates"]}]},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get district details","tags":["Geography"]}},"/api/v1/geography/subdistricts":{"get":{"description":"Returns subdistrict records from the released geography dataset. Results can be filtered by governorate ID or district ID for nested administrative views.","operationId":"listSubdistricts","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against ID, names, aliases, governorate ID, district ID, external IDs, source IDs, and source status.","schema":{"example":"hasakeh"}},{"name":"order","required":false,"in":"query","description":"Sort order by English display name. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"governorateId","required":false,"in":"query","description":"Filter subdistricts by stable OpenSyria governorate ID.","schema":{"example":"sy-al-hasakah"}},{"name":"districtId","required":false,"in":"query","description":"Filter subdistricts by stable OpenSyria district ID.","schema":{"example":"sy-al-hasakah-al-hasakah"}},{"name":"sourceStatus","required":false,"in":"query","description":"Filter records by source review or release status. pending_release=pending release, seed=seed data, released=released data, deprecated=deprecated data.","schema":{"enum":["pending_release","seed","released","deprecated"],"type":"string"}}],"responses":{"200":{"description":"List subdistricts\n\nList subdistricts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubdistrictListResponse"},"example":{"success":true,"status":200,"message":"Subdistricts fetched successfully","data":{"items":[{"id":"sy-damascus-damascus-damascus","governorateId":"sy-damascus","districtId":"sy-damascus-damascus","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq Subdistrict","language":"en","type":"alternate_spelling"}],"centroid":{"latitude":33.5138,"longitude":36.2765},"area":{"value":105,"unit":"km2","sourceIds":["fixture-source"]},"population":{"value":1552161,"year":2004,"sourceIds":["fixture-source"]},"externalIds":{"geonames":"170654","ochaPcode":"C100000101"},"sourceIds":["fixture-source"],"sourceStatus":"released"}],"pagination":{"limit":10,"currentPage":1,"pageRecords":1,"totalRecords":1,"totalPages":1,"nextPage":null,"previousPage":null},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"}},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List subdistricts","tags":["Geography"]}},"/api/v1/geography/subdistricts/{subdistrictId}":{"get":{"description":"Returns one released subdistrict record with dataset release context and sources.","operationId":"getSubdistrict","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"subdistrictId","required":true,"in":"path","description":"Stable OpenSyria subdistrict ID.","schema":{"example":"sy-al-hasakah-al-hasakah-al-hasakeh"}}],"responses":{"200":{"description":"Get subdistrict details\n\nGet subdistrict details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubdistrictDetailResponse"},"example":{"success":true,"status":200,"message":"Subdistrict fetched successfully","data":{"item":{"id":"sy-damascus-damascus-damascus","governorateId":"sy-damascus","districtId":"sy-damascus-damascus","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq Subdistrict","language":"en","type":"alternate_spelling"}],"centroid":{"latitude":33.5138,"longitude":36.2765},"area":{"value":105,"unit":"km2","sourceIds":["fixture-source"]},"population":{"value":1552161,"year":2004,"sourceIds":["fixture-source"]},"externalIds":{"geonames":"170654","ochaPcode":"C100000101"},"sourceIds":["fixture-source"],"sourceStatus":"released"},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"},"sources":[{"id":"geonames-sy","title":"GeoNames Syrian Arab Republic Gazetteer Extract","url":"https://download.geonames.org/export/dump/SY.zip","license":"CC BY 4.0","accessedAt":null,"fields":["names","alternateNames","featureCodes","coordinates"]}]},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get subdistrict details","tags":["Geography"]}},"/api/v1/geography/localities":{"get":{"description":"Returns compact locality records from the released geography dataset. Results can be filtered by administrative parent IDs, locality kind, and source status.","operationId":"listLocalities","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against IDs, names, aliases, external IDs, source IDs, kind, and source status.","schema":{"example":"hasakeh"}},{"name":"order","required":false,"in":"query","description":"Sort order by English display name. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"governorateId","required":false,"in":"query","description":"Filter localities by stable OpenSyria governorate ID.","schema":{"example":"sy-al-hasakah"}},{"name":"districtId","required":false,"in":"query","description":"Filter localities by stable OpenSyria district ID.","schema":{"example":"sy-al-hasakah-al-hasakah"}},{"name":"subdistrictId","required":false,"in":"query","description":"Filter localities by stable OpenSyria subdistrict ID.","schema":{"example":"sy-al-hasakah-al-hasakah-al-hasakeh"}},{"name":"kind","required":false,"in":"query","description":"Filter records by locality kind.","schema":{"enum":["city","town","village","locality"],"type":"string"}},{"name":"sourceStatus","required":false,"in":"query","description":"Filter records by source review or release status. pending_release=pending release, seed=seed data, released=released data, deprecated=deprecated data.","schema":{"enum":["pending_release","seed","released","deprecated"],"type":"string"}}],"responses":{"200":{"description":"List localities\n\nList localities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalityListResponse"},"example":{"success":true,"status":200,"message":"Localities fetched successfully","data":{"items":[{"id":"sy-damascus-damascus-damascus-damascus","governorateId":"sy-damascus","districtId":"sy-damascus-damascus","subdistrictId":"sy-damascus-damascus-damascus","kind":"city","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq","language":"en","type":"alternate_spelling"}],"centroid":{"latitude":33.5138,"longitude":36.2765},"externalIds":{"geonames":"170654","ochaPcode":"C1000"},"sourceIds":["geonames-sy","hdx-syr-populated-places"],"sourceStatus":"released"}],"pagination":{"limit":10,"currentPage":1,"pageRecords":1,"totalRecords":1,"totalPages":1,"nextPage":null,"previousPage":null},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"}},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List localities","tags":["Geography"]}},"/api/v1/geography/localities/{localityId}":{"get":{"description":"Returns one released locality record with aliases, external IDs, source IDs, dataset release context, and sources.","operationId":"getLocality","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"localityId","required":true,"in":"path","description":"Stable OpenSyria locality ID.","schema":{"example":"sy-al-hasakah-al-hasakah-al-hasakeh-abiad"}}],"responses":{"200":{"description":"Get locality details\n\nGet locality details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalityDetailResponse"},"example":{"success":true,"status":200,"message":"Locality fetched successfully","data":{"item":{"id":"sy-damascus-damascus-damascus-damascus","governorateId":"sy-damascus","districtId":"sy-damascus-damascus","subdistrictId":"sy-damascus-damascus-damascus","kind":"city","name":{"en":"Damascus","ar":"دمشق"},"aliases":[{"value":"Dimashq","language":"en","type":"alternate_spelling"}],"centroid":{"latitude":33.5138,"longitude":36.2765},"externalIds":{"geonames":"170654","ochaPcode":"C1000"},"sourceIds":["geonames-sy","hdx-syr-populated-places"],"sourceStatus":"released"},"dataset":{"id":"opensyria-geography","repository":"data-geography","status":"released"},"release":{"version":"v0.1.3","releasedAt":"2026-06-28T00:00:00.000Z"},"sources":[{"id":"geonames-sy","title":"GeoNames Syrian Arab Republic Gazetteer Extract","url":"https://download.geonames.org/export/dump/SY.zip","license":"CC BY 4.0","accessedAt":null,"fields":["names","alternateNames","featureCodes","coordinates"]}]},"timestamp":"2026-06-27T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get locality details","tags":["Geography"]}},"/api/v1/universities":{"get":{"description":"Returns public university profile records from the released universities dataset, including institution identity, location, logo variants, and source-backed ranking snapshots when available.","operationId":"listUniversities","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"page","required":false,"in":"query","description":"Page number for offset pagination.","schema":{"example":1}},{"name":"limit","required":false,"in":"query","description":"Maximum number of records to return. ten=10, thirty_five=35, fifty=50.","schema":{"enum":["ten","thirty_five","fifty"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search term matched against ID, names, aliases, institution type, location, external IDs, source IDs, logo metadata, and ranking metadata.","schema":{"example":"damascus"}},{"name":"order","required":false,"in":"query","description":"Sort order by English display name. asc=ascending, desc=descending.","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"institutionType","required":false,"in":"query","description":"Filter universities by institution type.","schema":{"enum":["public","private","virtual","technical","religious","other"],"type":"string"}},{"name":"governorate","required":false,"in":"query","description":"Filter by English or Arabic governorate name.","schema":{"example":"Damascus"}},{"name":"sourceStatus","required":false,"in":"query","description":"Filter records by source review or release status. pending_release=pending release, seed=seed data, released=released data, deprecated=deprecated data.","schema":{"enum":["pending_release","seed","released","deprecated"],"type":"string"}},{"name":"hasWebsite","required":false,"in":"query","description":"Filter to universities with or without an approved public website URL.","schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"description":"List universities\n\nList universities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UniversityListResponse"},"example":{"success":true,"status":200,"message":"Universities fetched successfully","data":{"items":[{"id":"sy-damascus-university","name":{"en":"Damascus University","ar":"جامعة دمشق"},"aliases":[],"institutionType":"public","operationalStatus":"unknown","foundedYear":1923,"website":"https://damascusuniversity.edu.sy/","location":{"governorate":{"en":"Damascus","ar":"دمشق"},"locality":{"en":"Damascus","ar":"دمشق"},"centroid":{"latitude":33.5102,"longitude":36.2925}},"externalIds":{"wikidata":"Q821075","website":"https://damascusuniversity.edu.sy/"},"sourceIds":["wikidata","wikipedia-list-universities-syria"],"sourceStatus":"seed","logo":{"id":"sy-damascus-university-logo","universityId":"sy-damascus-university","assetType":"image","assetRole":"logo","title":{"en":"Damascus University logo","ar":"شعار جامعة دمشق"},"variants":[{"url":"https://cdn.opensyria.org/universities/sy-damascus-university/logo-v1/w256.webp","key":"universities/sy-damascus-university/logo-v1/w256.webp","format":"webp","contentType":"image/webp","width":256,"height":256,"sha256":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","sizeBytes":12345}],"attribution":{"sourceProvider":"Official university website","sourceTitle":"Damascus University official logo","sourceUrl":"https://damascusuniversity.edu.sy/","creator":"Damascus University","license":"Official institutional logo; trademark rights may apply","licenseUrl":"https://damascusuniversity.edu.sy/","attributionRequired":false},"sourceIds":["sy-damascus-university-official-logo"],"sourceStatus":"seed"},"rankings":[{"id":"sy-damascus-university-arab-ranking-for-universities-national-2025","universityId":"sy-damascus-university","rankingSystem":"Arab Ranking for Universities","rankScope":"national","year":2025,"rank":1,"rankDisplay":"1","sourceUrl":"https://www.auranking.aaru.edu.jo/rank%20results/","retrievedAt":"2026-06-30T00:00:00.000Z","sourceIds":["arab-ranking-for-universities-2025"],"sourceStatus":"seed"}]}],"pagination":{"limit":10,"currentPage":1,"pageRecords":1,"totalRecords":57,"totalPages":6,"nextPage":2,"previousPage":null},"dataset":{"id":"opensyria-universities","repository":"data-universities","status":"released"},"release":{"version":"v0.2.0","releasedAt":"2026-06-30T00:46:15.000Z"}},"timestamp":"2026-06-30T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"List universities","tags":["Universities"]}},"/api/v1/universities/{universityId}":{"get":{"description":"Returns one released university profile with logo variants, ranking snapshots, dataset release context, and source attribution.","operationId":"getUniversity","parameters":[{"name":"X-Lang","in":"header","required":false,"description":"Preferred locale for response messages. Supported values are en and ar. Multilingual data fields are still returned as locale-keyed objects.","schema":{"type":"string","enum":["en","ar"],"default":"en"}},{"name":"universityId","required":true,"in":"path","description":"Stable OpenSyria university ID.","schema":{"example":"sy-damascus-university"}}],"responses":{"200":{"description":"Get university details\n\nGet university details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UniversityDetailResponse"},"example":{"success":true,"status":200,"message":"University fetched successfully","data":{"item":{"id":"sy-damascus-university","name":{"en":"Damascus University","ar":"جامعة دمشق"},"aliases":[],"institutionType":"public","operationalStatus":"unknown","foundedYear":1923,"website":"https://damascusuniversity.edu.sy/","location":{"governorate":{"en":"Damascus","ar":"دمشق"},"locality":{"en":"Damascus","ar":"دمشق"},"centroid":{"latitude":33.5102,"longitude":36.2925}},"externalIds":{"wikidata":"Q821075","website":"https://damascusuniversity.edu.sy/"},"sourceIds":["wikidata","wikipedia-list-universities-syria"],"sourceStatus":"seed","logo":{"id":"sy-damascus-university-logo","universityId":"sy-damascus-university","assetType":"image","assetRole":"logo","title":{"en":"Damascus University logo","ar":"شعار جامعة دمشق"},"variants":[{"url":"https://cdn.opensyria.org/universities/sy-damascus-university/logo-v1/w256.webp","key":"universities/sy-damascus-university/logo-v1/w256.webp","format":"webp","contentType":"image/webp","width":256,"height":256,"sha256":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","sizeBytes":12345}],"attribution":{"sourceProvider":"Official university website","sourceTitle":"Damascus University official logo","sourceUrl":"https://damascusuniversity.edu.sy/","creator":"Damascus University","license":"Official institutional logo; trademark rights may apply","licenseUrl":"https://damascusuniversity.edu.sy/","attributionRequired":false},"sourceIds":["sy-damascus-university-official-logo"],"sourceStatus":"seed"},"rankings":[{"id":"sy-damascus-university-arab-ranking-for-universities-national-2025","universityId":"sy-damascus-university","rankingSystem":"Arab Ranking for Universities","rankScope":"national","year":2025,"rank":1,"rankDisplay":"1","sourceUrl":"https://www.auranking.aaru.edu.jo/rank%20results/","retrievedAt":"2026-06-30T00:00:00.000Z","sourceIds":["arab-ranking-for-universities-2025"],"sourceStatus":"seed"}]},"dataset":{"id":"opensyria-universities","repository":"data-universities","status":"released"},"release":{"version":"v0.2.0","releasedAt":"2026-06-30T00:46:15.000Z"},"sources":[{"id":"wikipedia-list-universities-syria","title":"Wikipedia list of universities in Syria","url":"https://en.wikipedia.org/wiki/List_of_universities_in_Syria","license":"CC BY-SA 4.0","accessedAt":"2026-06-29T00:00:00.000Z","fields":["identity","location","website"]}]},"timestamp":"2026-06-30T00:00:00.000Z"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":404,"error":"NotFoundException","message":"Resource not found","timestamp":"2026-06-27T00:00:00.000Z"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":400,"error":"ValidationError","message":"Validation failed","details":[{"code":"invalid_type","message":"Expected number, received string","property":"limit"}],"timestamp":"2026-06-27T00:00:00.000Z"}}}},"429":{"description":"Daily quota exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":429,"error":"ThrottlerException","message":"You are out of free API requests for today. Please try again after your quota resets.","timestamp":"2026-06-27T00:00:00.000Z"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"},"example":{"success":false,"status":500,"error":"InternalServerErrorException","message":"Internal server error","timestamp":"2026-06-27T00:00:00.000Z"}}}}},"summary":"Get university details","tags":["Universities"]}}},"info":{"title":"OpenSyria Datasets API","description":"Public read-only API for stable, versioned OpenSyria reference datasets. Released endpoints cover Syrian administrative geography and public university profiles, including release metadata, source attribution, university logos, and ranking snapshots.","version":"0.0.1","contact":{}},"tags":[{"name":"Health","description":"Operational health endpoint."},{"name":"Dataset Discovery","description":"Dataset metadata and release discovery."},{"name":"Releases","description":"Released dataset bundle metadata."},{"name":"Geography","description":"Administrative geography endpoints."},{"name":"Universities","description":"Higher education institution profile endpoints."}],"servers":[{"url":"https://api.opensyria.org"}],"components":{"schemas":{"HealthResponse_Output":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"app":{"type":"object","properties":{"name":{"type":"string"},"environment":{"type":"string","enum":["local","development","staging","production","test"]}},"required":["name","environment"],"additionalProperties":false},"uptimeSeconds":{"type":"number","minimum":0},"redis":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"disabled"},"latencyMs":{"type":"number","const":0}},"required":["status","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"up"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"down"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string"}},"required":["status","latencyMs","message"],"additionalProperties":false}]},"database":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"disabled"},"required":{"type":"boolean"},"latencyMs":{"type":"number","const":0}},"required":["status","required","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"up"},"required":{"type":"boolean"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","required","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"down"},"required":{"type":"boolean"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string"}},"required":["status","required","latencyMs","message"],"additionalProperties":false}]},"datasetReleases":{"type":"object","properties":{"status":{"type":"string","enum":["loaded","missing","not_required"]},"required":{"type":"boolean"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","required","count"],"additionalProperties":false}},"required":["status","app","uptimeSeconds","redis","database","datasetReleases"],"additionalProperties":false}},"required":["success","status","message","timestamp","data"],"additionalProperties":false},"ErrorResponseDto":{"type":"object","properties":{"success":{"type":"boolean","const":false},"status":{"type":"integer","minimum":100,"maximum":599,"example":400},"error":{"type":"string","minLength":1},"message":{"type":"string","minLength":1},"details":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","minLength":1},"property":{"type":"string"}},"required":["message"]}},{}]},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"stack":{"type":"string"}},"required":["success","status","error","message","timestamp"]},"LivenessResponse_Output":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"status":{"type":"string","const":"ok"},"app":{"type":"object","properties":{"name":{"type":"string"},"environment":{"type":"string","enum":["local","development","staging","production","test"]}},"required":["name","environment"],"additionalProperties":false},"uptimeSeconds":{"type":"number","minimum":0}},"required":["status","app","uptimeSeconds"],"additionalProperties":false}},"required":["success","status","message","timestamp","data"],"additionalProperties":false},"ReadinessResponse_Output":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"app":{"type":"object","properties":{"name":{"type":"string"},"environment":{"type":"string","enum":["local","development","staging","production","test"]}},"required":["name","environment"],"additionalProperties":false},"uptimeSeconds":{"type":"number","minimum":0},"redis":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"disabled"},"latencyMs":{"type":"number","const":0}},"required":["status","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"up"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"down"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string"}},"required":["status","latencyMs","message"],"additionalProperties":false}]},"database":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"disabled"},"required":{"type":"boolean"},"latencyMs":{"type":"number","const":0}},"required":["status","required","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"up"},"required":{"type":"boolean"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","required","latencyMs"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"down"},"required":{"type":"boolean"},"latencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"message":{"type":"string"}},"required":["status","required","latencyMs","message"],"additionalProperties":false}]},"datasetReleases":{"type":"object","properties":{"status":{"type":"string","enum":["loaded","missing","not_required"]},"required":{"type":"boolean"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","required","count"],"additionalProperties":false}},"required":["status","app","uptimeSeconds","redis","database","datasetReleases"],"additionalProperties":false}},"required":["success","status","message","timestamp","data"],"additionalProperties":false},"DatasetSummaryListResponse_Output":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"],"additionalProperties":false},"description":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"],"additionalProperties":false},"category":{"type":"string","enum":["geography","education","transport","heritage","telecom"]},"repository":{"type":"string","minLength":1},"status":{"type":"string","enum":["planned","seed","released","deprecated"]},"apiEndpoints":{"type":"array","items":{"type":"string","minLength":1}},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["id","slug","name","description","category","repository","status","apiEndpoints","version","updatedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"],"additionalProperties":false}},"required":["items","pagination"],"additionalProperties":false}},"required":["success","status","message","timestamp","data"],"additionalProperties":false},"ReleaseSummaryListResponse_Output":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["planned","seed","released","deprecated"]},"generatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"datasets":{"type":"array","items":{"type":"object","properties":{"datasetId":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"category":{"type":"string","enum":["geography","education","transport","heritage","telecom"]},"title":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"],"additionalProperties":false},"status":{"type":"string","enum":["planned","seed","released","deprecated"]},"releaseVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"manifestPath":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["datasetId","slug","repository","category","title","status","releaseVersion","manifestPath"],"additionalProperties":false}},"artifacts":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"format":{"type":"string","enum":["json","ndjson","csv","geojson","sqlite","sql","yaml","xml"]},"path":{"type":"string","minLength":1},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"sizeBytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"recordCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"mediaType":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["name","format","path","url","sha256","sizeBytes","recordCount","mediaType"],"additionalProperties":false}},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","version","status","generatedAt","publishedAt","datasets","artifacts","notes"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"],"additionalProperties":false}},"required":["items","pagination"],"additionalProperties":false}},"required":["success","status","message","timestamp","data"],"additionalProperties":false},"GovernorateListResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"area":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","const":"km2"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","unit","sourceIds"]},{"type":"null"}]},"population":{"anyOf":[{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]},{"type":"null"}]},"populationHistory":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]}},"iso31662":{"anyOf":[{"type":"string","pattern":"^SY-[A-Z]{2}$"},{"type":"null"}]}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","area","population","iso31662"]}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]}},"required":["items","pagination","dataset","release"]}},"required":["success","status","message","timestamp","data"]},"GovernorateDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"area":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","const":"km2"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","unit","sourceIds"]},{"type":"null"}]},"population":{"anyOf":[{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]},{"type":"null"}]},"populationHistory":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]}},"iso31662":{"anyOf":[{"type":"string","pattern":"^SY-[A-Z]{2}$"},{"type":"null"}]}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","area","population","iso31662"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"license":{"type":"string","minLength":1},"accessedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"fields":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","title","url","license","accessedAt","fields"]}}},"required":["item","dataset","release","sources"]}},"required":["success","status","message","timestamp","data"]},"DistrictListResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"area":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","const":"km2"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","unit","sourceIds"]},{"type":"null"}]},"population":{"anyOf":[{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]},{"type":"null"}]},"populationHistory":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]}},"governorateId":{"type":"string","minLength":1}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","area","population","governorateId"]}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]}},"required":["items","pagination","dataset","release"]}},"required":["success","status","message","timestamp","data"]},"DistrictDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"area":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","const":"km2"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","unit","sourceIds"]},{"type":"null"}]},"population":{"anyOf":[{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]},{"type":"null"}]},"populationHistory":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]}},"governorateId":{"type":"string","minLength":1}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","area","population","governorateId"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"license":{"type":"string","minLength":1},"accessedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"fields":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","title","url","license","accessedAt","fields"]}}},"required":["item","dataset","release","sources"]}},"required":["success","status","message","timestamp","data"]},"SubdistrictListResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"area":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","const":"km2"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","unit","sourceIds"]},{"type":"null"}]},"population":{"anyOf":[{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]},{"type":"null"}]},"populationHistory":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]}},"governorateId":{"type":"string","minLength":1},"districtId":{"type":"string","minLength":1}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","area","population","governorateId","districtId"]}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]}},"required":["items","pagination","dataset","release"]}},"required":["success","status","message","timestamp","data"]},"SubdistrictDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"area":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","const":"km2"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","unit","sourceIds"]},{"type":"null"}]},"population":{"anyOf":[{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]},{"type":"null"}]},"populationHistory":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":9007199254740991},"year":{"type":"integer","minimum":1,"maximum":9999},"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"notes":{"type":"string","minLength":1}},"required":["value","year","sourceIds"]}},"governorateId":{"type":"string","minLength":1},"districtId":{"type":"string","minLength":1}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","area","population","governorateId","districtId"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"license":{"type":"string","minLength":1},"accessedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"fields":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","title","url","license","accessedAt","fields"]}}},"required":["item","dataset","release","sources"]}},"required":["success","status","message","timestamp","data"]},"LocalityListResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"governorateId":{"type":"string","minLength":1},"districtId":{"type":"string","minLength":1},"subdistrictId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["city","town","village","locality"]}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","governorateId","kind"]}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]}},"required":["items","pagination","dataset","release"]}},"required":["success","status","message","timestamp","data"]},"LocalityDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"geonames":{"type":"string","pattern":"^[0-9]+$"},"geoboundaries":{"type":"string","minLength":1},"ochaPcode":{"type":"string","minLength":1}}},"sourceIds":{"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"governorateId":{"type":"string","minLength":1},"districtId":{"type":"string","minLength":1},"subdistrictId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["city","town","village","locality"]}},"required":["id","name","aliases","centroid","externalIds","sourceIds","sourceStatus","governorateId","kind"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-geography"},"repository":{"type":"string","const":"data-geography"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"license":{"type":"string","minLength":1},"accessedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"fields":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","title","url","license","accessedAt","fields"]}}},"required":["item","dataset","release","sources"]}},"required":["success","status","message","timestamp","data"]},"UniversityListResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"institutionType":{"type":"string","enum":["public","private","virtual","technical","religious","other"]},"operationalStatus":{"type":"string","enum":["operating","planned","closed","unknown"]},"foundedYear":{"anyOf":[{"type":"integer","minimum":1,"maximum":9999},{"type":"null"}]},"website":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"object","properties":{"governorate":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"locality":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"address":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]}}},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"website":{"type":"string","format":"uri"},"ministryId":{"type":"string","minLength":1}}},"sourceIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"logo":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"universityId":{"type":"string","minLength":1},"assetType":{"type":"string","const":"image"},"assetRole":{"type":"string","enum":["campus","logo","building","other"]},"title":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"variants":{"minItems":1,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"key":{"type":"string","minLength":1},"format":{"type":"string","enum":["webp","avif"]},"contentType":{"type":"string","enum":["image/webp","image/avif"]},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sizeBytes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["url","key","format","contentType","width","height","sha256","sizeBytes"]}},"attribution":{"type":"object","properties":{"sourceProvider":{"type":"string","minLength":1},"sourceTitle":{"type":"string","minLength":1},"sourceUrl":{"type":"string","format":"uri"},"creator":{"type":"string","minLength":1},"credit":{"type":"string","minLength":1},"license":{"type":"string","minLength":1},"licenseUrl":{"type":"string","format":"uri"},"attributionRequired":{"type":"boolean"}},"required":["sourceProvider","sourceTitle","sourceUrl","creator","license","licenseUrl","attributionRequired"]},"sourceIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1}},"required":["id","universityId","assetType","assetRole","title","variants","attribution","sourceIds","sourceStatus"]},{"type":"null"}]},"rankings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"universityId":{"type":"string","minLength":1},"rankingSystem":{"type":"string","minLength":1},"rankScope":{"type":"string","enum":["global","regional","national","subject","other"]},"year":{"type":"integer","minimum":1900,"maximum":9999},"rank":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"rankDisplay":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"sourceUrl":{"type":"string","format":"uri"},"retrievedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sourceIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1}},"required":["id","universityId","rankingSystem","rankScope","year","rank","rankDisplay","sourceUrl","retrievedAt","sourceIds","sourceStatus"]}}},"required":["id","name","aliases","institutionType","operationalStatus","foundedYear","website","location","externalIds","sourceIds","sourceStatus","logo","rankings"]}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentPage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPages":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"previousPage":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["limit","currentPage","pageRecords","totalRecords","totalPages","nextPage","previousPage"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-universities"},"repository":{"type":"string","const":"data-universities"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]}},"required":["items","pagination","dataset","release"]}},"required":["success","status","message","timestamp","data"]},"UniversityDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","const":true},"status":{"type":"integer","minimum":100,"maximum":599,"example":200},"message":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"data":{"type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"aliases":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1},"language":{"type":"string","enum":["ar","en","und"]},"type":{"type":"string","enum":["alias","formal","transliteration","historical","alternate_spelling"]}},"required":["value"]}},"institutionType":{"type":"string","enum":["public","private","virtual","technical","religious","other"]},"operationalStatus":{"type":"string","enum":["operating","planned","closed","unknown"]},"foundedYear":{"anyOf":[{"type":"integer","minimum":1,"maximum":9999},{"type":"null"}]},"website":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"location":{"anyOf":[{"type":"object","properties":{"governorate":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"locality":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"address":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"centroid":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},{"type":"null"}]}}},{"type":"null"}]},"externalIds":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[0-9]+$"},"website":{"type":"string","format":"uri"},"ministryId":{"type":"string","minLength":1}}},"sourceIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1},"logo":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"universityId":{"type":"string","minLength":1},"assetType":{"type":"string","const":"image"},"assetRole":{"type":"string","enum":["campus","logo","building","other"]},"title":{"type":"object","properties":{"en":{"type":"string","minLength":1},"ar":{"type":"string","minLength":1}},"required":["en"]},"variants":{"minItems":1,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"key":{"type":"string","minLength":1},"format":{"type":"string","enum":["webp","avif"]},"contentType":{"type":"string","enum":["image/webp","image/avif"]},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sizeBytes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["url","key","format","contentType","width","height","sha256","sizeBytes"]}},"attribution":{"type":"object","properties":{"sourceProvider":{"type":"string","minLength":1},"sourceTitle":{"type":"string","minLength":1},"sourceUrl":{"type":"string","format":"uri"},"creator":{"type":"string","minLength":1},"credit":{"type":"string","minLength":1},"license":{"type":"string","minLength":1},"licenseUrl":{"type":"string","format":"uri"},"attributionRequired":{"type":"boolean"}},"required":["sourceProvider","sourceTitle","sourceUrl","creator","license","licenseUrl","attributionRequired"]},"sourceIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1}},"required":["id","universityId","assetType","assetRole","title","variants","attribution","sourceIds","sourceStatus"]},{"type":"null"}]},"rankings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"universityId":{"type":"string","minLength":1},"rankingSystem":{"type":"string","minLength":1},"rankScope":{"type":"string","enum":["global","regional","national","subject","other"]},"year":{"type":"integer","minimum":1900,"maximum":9999},"rank":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"rankDisplay":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"sourceUrl":{"type":"string","format":"uri"},"retrievedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sourceIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"sourceStatus":{"type":"string","enum":["pending_release","seed","released","deprecated"]},"notes":{"type":"string","minLength":1}},"required":["id","universityId","rankingSystem","rankScope","year","rank","rankDisplay","sourceUrl","retrievedAt","sourceIds","sourceStatus"]}}},"required":["id","name","aliases","institutionType","operationalStatus","foundedYear","website","location","externalIds","sourceIds","sourceStatus","logo","rankings"]},"dataset":{"type":"object","properties":{"id":{"type":"string","const":"opensyria-universities"},"repository":{"type":"string","const":"data-universities"},"status":{"type":"string","enum":["pending_release","planned","seed","released","deprecated"]}},"required":["id","repository","status"]},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["version","releasedAt"]},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"license":{"type":"string","minLength":1},"accessedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"fields":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","title","url","license","accessedAt","fields"]}}},"required":["item","dataset","release","sources"]}},"required":["success","status","message","timestamp","data"]}}}}