{"openapi":"3.1.0","info":{"title":"SSCD Dataset API","version":"1.0.0","description":"Read and search access to SSCD shopping-centre and project data for authenticated subscriber accounts."},"servers":[{"url":"https://0.0.0.0:3000"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key"}},"schemas":{"CentreRecord":{"type":"object","properties":{"id":{"type":"string","nullable":true},"slug":{"type":"string","nullable":true},"legacyCode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"county":{"type":"string","nullable":true},"municipality":{"type":"string","nullable":true},"regionName":{"type":"string","nullable":true},"streetAddress":{"type":"string","nullable":true},"postalCode":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"covered":{"type":"boolean","nullable":true},"floors":{"type":"number","nullable":true},"parkingSpaces":{"type":"number","nullable":true},"openingYear":{"type":"number","nullable":true},"homepageUrl":{"type":"string","nullable":true},"owners":{"type":"array","items":{"type":"string"}},"anchorTenants":{"type":"array","items":{"type":"string"}},"latestMetricYear":{"type":"number","nullable":true},"visitorsMillions":{"type":"number","nullable":true},"totalTenantCount":{"type":"number","nullable":true},"totalGlaSqm":{"type":"number","nullable":true},"commonAreaSqm":{"type":"number","nullable":true},"totalAreaSqm":{"type":"number","nullable":true},"retailSalesMsek":{"type":"number","nullable":true},"totalSalesMsek":{"type":"number","nullable":true},"retailSalesPerSqmSek":{"type":"number","nullable":true},"totalSalesPerSqmSek":{"type":"number","nullable":true},"publishedAt":{"type":"string","format":"date-time","nullable":true},"updatedAt":{"type":"string","format":"date-time","nullable":true}}},"ProjectRecord":{"type":"object","properties":{"id":{"type":"string","nullable":true},"slug":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"centreSlug":{"type":"string","nullable":true},"county":{"type":"string","nullable":true},"municipality":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"planningStage":{"type":"string","nullable":true},"planningType":{"type":"string","nullable":true},"propertyDesignation":{"type":"string","nullable":true},"areaDescription":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"existingGlaSqm":{"type":"number","nullable":true},"newGlaSqm":{"type":"number","nullable":true},"constructionStartYear":{"type":"number","nullable":true},"plannedOpeningYear":{"type":"number","nullable":true},"newTenantCount":{"type":"number","nullable":true},"signedAnchorTenants":{"type":"string","nullable":true},"signedTenants":{"type":"string","nullable":true},"owners":{"type":"array","items":{"type":"string"}},"updatedSourceAt":{"type":"string","format":"date-time","nullable":true},"updatedAt":{"type":"string","format":"date-time","nullable":true}}},"PagedCentres":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CentreRecord"}},"meta":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"},"hasMore":{"type":"boolean"}}}}},"PagedProjects":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRecord"}},"meta":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"},"hasMore":{"type":"boolean"}}}}},"ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"paths":{"/api/v1/metadata":{"get":{"summary":"Get dataset metadata and column definitions","responses":{"200":{"description":"Metadata response"}}}},"/api/v1/centres":{"get":{"summary":"List and search centres","parameters":[{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"county","schema":{"type":"string"}},{"in":"query","name":"municipality","schema":{"type":"string"}},{"in":"query","name":"type","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"anchor","schema":{"type":"string"}},{"in":"query","name":"minGla","schema":{"type":"number"}},{"in":"query","name":"maxGla","schema":{"type":"number"}},{"in":"query","name":"minSales","schema":{"type":"number"}},{"in":"query","name":"maxSales","schema":{"type":"number"}},{"in":"query","name":"minVisitors","schema":{"type":"number"}},{"in":"query","name":"maxVisitors","schema":{"type":"number"}},{"in":"query","name":"sort","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"limit","schema":{"type":"integer"}}],"responses":{"200":{"description":"Centre results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedCentres"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/centres/{slug}":{"get":{"summary":"Read a single centre by slug","parameters":[{"in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Centre detail"},"404":{"description":"Not found"}}}},"/api/v1/projects":{"get":{"summary":"List and search planned projects","parameters":[{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"county","schema":{"type":"string"}},{"in":"query","name":"municipality","schema":{"type":"string"}},{"in":"query","name":"type","schema":{"type":"string"}},{"in":"query","name":"stage","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"minNewGla","schema":{"type":"number"}},{"in":"query","name":"maxNewGla","schema":{"type":"number"}},{"in":"query","name":"openingFrom","schema":{"type":"integer"}},{"in":"query","name":"openingTo","schema":{"type":"integer"}},{"in":"query","name":"sort","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"limit","schema":{"type":"integer"}}],"responses":{"200":{"description":"Project results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedProjects"}}}}}}},"/api/v1/projects/{slug}":{"get":{"summary":"Read a single project by slug","parameters":[{"in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project detail"},"404":{"description":"Not found"}}}},"/api/mcp":{"post":{"summary":"Streamable HTTP MCP endpoint","description":"Model Context Protocol endpoint exposing read/search tools for centres and projects.","responses":{"200":{"description":"MCP response"},"401":{"description":"Unauthorized"}}}}}}