{"openapi":"3.1.0","info":{"title":"Projectory Public API","version":"1.0.0","description":"Public read-only REST API for Projectory, an off-plan real estate development listing platform in the UAE. A read-only Model Context Protocol (MCP) server wrapping this API is available for AI clients at https://mcp.projectory.ae/mcp — see https://projectory.ae/mcp for setup."},"servers":[{"url":"https://api.projectory.ae"}],"externalDocs":{"description":"Projectory MCP setup guide","url":"https://projectory.ae/mcp"},"paths":{"/health":{"get":{"summary":"Check that the API process is responding","responses":{"200":{"description":"The API process is responding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/ready":{"get":{"summary":"Check that the API can read published project data","responses":{"200":{"description":"The API can read the required project schema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/openapi.json":{"get":{"summary":"Fetch this OpenAPI contract","responses":{"200":{"description":"The OpenAPI document.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/projects":{"get":{"summary":"Search published off-plan projects","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"emirate","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"developer","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"area","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"property_type","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"bedrooms_min","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":20}},{"name":"price_min_aed","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000000000}},{"name":"price_max_aed","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000000000}},{"name":"handover_year","in":"query","required":false,"schema":{"type":"integer","minimum":1900,"maximum":2200}},{"name":"availability","in":"query","required":false,"schema":{"type":"string","enum":["available","limited","sold-out"]}},{"name":"new_launch","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"coming_soon","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["recommended","price-asc","price-desc","handover-asc","handover-desc"],"default":"recommended"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":25,"default":10}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"A page of matching projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/projects/{slug}":{"get":{"summary":"Fetch one published project by slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"The matching project.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ProjectDetail"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/search-options":{"get":{"summary":"List valid public search filters","responses":{"200":{"description":"Available emirates, areas, developers, property types, flags, and sorts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchOptionsResponse"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}}},"components":{"responses":{"BadRequest":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"No matching resource was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"TooManyRequests":{"description":"The request rate is too high.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServiceUnavailable":{"description":"The service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","required":["type","title","status","detail","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400},"detail":{"type":"string"},"code":{"type":"string"},"requestId":{"type":["string","null"]}}},"HealthResponse":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}},"NamedSlug":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"Area":{"allOf":[{"$ref":"#/components/schemas/NamedSlug"},{"type":"object","required":["emirate"],"properties":{"emirate":{"type":"string"}}}]},"ImageAsset":{"type":"object","required":["id","url","fullUrl","altText","width","height","sortOrder"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"fullUrl":{"type":["string","null"],"format":"uri"},"altText":{"type":["string","null"]},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"sortOrder":{"type":"integer"}}},"PaymentPlanStage":{"type":"object","required":["id","title","percentage","bucket","sortOrder"],"properties":{"id":{"type":"string"},"title":{"type":["string","null"]},"percentage":{"type":"integer","minimum":0,"maximum":100},"bucket":{"type":"string","enum":["booking","construction","handover","other"]},"sortOrder":{"type":"integer"}}},"UnitType":{"type":"object","required":["id","propertyType","sourcePropertyTypeLabel","bedroomCount","typeName","sqft","floorPlanUrl","floorPlanPreviewUrl","floorPlanWidth","floorPlanHeight","towerName","isAvailableOnRequest","sortOrder"],"properties":{"id":{"type":"string"},"propertyType":{"anyOf":[{"$ref":"#/components/schemas/NamedSlug"},{"type":"null"}]},"sourcePropertyTypeLabel":{"type":["string","null"]},"bedroomCount":{"type":["integer","null"]},"typeName":{"type":["string","null"]},"sqft":{"type":["integer","null"]},"floorPlanUrl":{"type":["string","null"],"format":"uri"},"floorPlanPreviewUrl":{"type":["string","null"],"format":"uri"},"floorPlanWidth":{"type":["integer","null"]},"floorPlanHeight":{"type":["integer","null"]},"towerName":{"type":["string","null"]},"isAvailableOnRequest":{"type":"boolean"},"sortOrder":{"type":"integer"}}},"ProjectContactAction":{"type":"object","required":["channel","label","prompt","url","message"],"properties":{"channel":{"type":"string","enum":["whatsapp"]},"label":{"type":"string"},"prompt":{"type":"string"},"url":{"type":"string","format":"uri"},"message":{"type":"string"}}},"Project":{"type":"object","required":["id","slug","canonicalUrl","title","developer","coordinates","availability","flags","media","contactAction"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"canonicalUrl":{"type":"string","format":"uri"},"title":{"type":"string"},"description":{"type":["string","null"]},"emirate":{"anyOf":[{"$ref":"#/components/schemas/NamedSlug"},{"type":"null"}]},"areas":{"type":"array","items":{"$ref":"#/components/schemas/Area"}},"developer":{"$ref":"#/components/schemas/NamedSlug"},"propertyTypes":{"type":"array","items":{"$ref":"#/components/schemas/NamedSlug"}},"price":{"type":"object","required":["min","max","currency"],"properties":{"min":{"type":["integer","null"]},"max":{"type":["integer","null"]},"currency":{"type":"string","const":"AED"}}},"bedrooms":{"type":"object","required":["min","max"],"properties":{"min":{"type":["integer","null"]},"max":{"type":["integer","null"]}}},"coordinates":{"type":"object","required":["lat","lng"],"properties":{"lat":{"type":["number","null"]},"lng":{"type":["number","null"]}}},"handoverDate":{"type":["string","null"]},"availability":{"type":"string","enum":["available","limited","sold-out"]},"flags":{"type":"object","required":["newLaunch","comingSoon"],"properties":{"newLaunch":{"type":"boolean"},"comingSoon":{"type":"boolean"}}},"media":{"type":"object","required":["coverImageUrl","coverImageRetinaUrl","coverImageAlt"],"properties":{"coverImageUrl":{"type":["string","null"],"format":"uri"},"coverImageRetinaUrl":{"type":["string","null"],"format":"uri"},"coverImageAlt":{"type":["string","null"]}}},"contactAction":{"$ref":"#/components/schemas/ProjectContactAction"},"evidence":{"type":"array","items":{"type":"string"}}}},"ProjectDetail":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","required":["content","locationDescription","primaryImage","paymentPlan","unitTypes"],"properties":{"content":{"type":["string","null"]},"locationDescription":{"type":["string","null"]},"primaryImage":{"anyOf":[{"$ref":"#/components/schemas/ImageAsset"},{"type":"null"}]},"paymentPlan":{"type":"array","items":{"$ref":"#/components/schemas/PaymentPlanStage"}},"unitTypes":{"type":"array","items":{"$ref":"#/components/schemas/UnitType"}}}}]},"ProjectListResponse":{"type":"object","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"pagination":{"type":"object","required":["limit","nextCursor"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"nextCursor":{"type":["string","null"]}}}}},"SearchOptionsResponse":{"type":"object","required":["emirates","areasByEmirate","developers","propertyTypes","availability","booleanFlags","sort"],"properties":{"emirates":{"type":"array","items":{"$ref":"#/components/schemas/NamedSlug"}},"areasByEmirate":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/Area"}}},"developers":{"type":"array","items":{"$ref":"#/components/schemas/NamedSlug"}},"propertyTypes":{"type":"array","items":{"$ref":"#/components/schemas/NamedSlug"}},"availability":{"type":"array","items":{"type":"string","enum":["available","limited","sold-out"]}},"booleanFlags":{"type":"array","items":{"type":"string","enum":["new_launch","coming_soon"]}},"sort":{"type":"array","items":{"type":"string","enum":["recommended","price-asc","price-desc","handover-asc","handover-desc"]}}}}}}}