{"openapi":"3.1.0","info":{"title":"GeoAI Urban Change Detection","description":"\n## GeoAI Urban Satellite Change Detection\n\nResearch prototype API for multi-temporal urban change analysis over **Muscat / Oman**.\n\n### Capabilities\n- Study-area catalog (national + city AOIs)\n- Full analysis pipeline (`baseline` or `cva`)\n- NDVI / NDBI metrics and extended statistics\n- GeoJSON change regions + PNG map overlays\n\n### Quick links\n- Portal home: [`/`](/)\n- Swagger UI: [`/docs`](/docs)\n- ReDoc: [`/redoc`](/redoc)\n\n> **Disclaimer:** Research prototype — validate outputs before operational decisions.\n","version":"0.1.0"},"paths":{"/api/health":{"get":{"tags":["health"],"summary":"Health Check","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/api/study-areas":{"get":{"tags":["study-area"],"summary":"List Study Areas","operationId":"list_study_areas_api_study_areas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudyAreasListResponse"}}}}}}},"/api/study-area":{"get":{"tags":["study-area"],"summary":"Get Default Study Area","operationId":"get_default_study_area_api_study_area_get","parameters":[{"name":"area_id","in":"query","required":false,"schema":{"type":"string","default":"muscat","title":"Area Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudyAreaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/study-areas/{area_id}":{"get":{"tags":["study-area"],"summary":"Get Study Area By Id","operationId":"get_study_area_by_id_api_study_areas__area_id__get","parameters":[{"name":"area_id","in":"path","required":true,"schema":{"type":"string","title":"Area Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudyAreaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analyze":{"post":{"tags":["analysis"],"summary":"Analyze","operationId":"analyze_api_analyze_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_api_analyze_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/statistics":{"get":{"tags":["analysis"],"summary":"Get Statistics","operationId":"get_statistics_api_statistics_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Statistics Api Statistics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/changes":{"get":{"tags":["analysis"],"summary":"Get Changes","operationId":"get_changes_api_changes_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJSONResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ndvi":{"get":{"tags":["ndvi"],"summary":"Get Ndvi","operationId":"get_ndvi_api_ndvi_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NDVIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rasters/{run_id}/{filename}":{"get":{"tags":["rasters"],"summary":"Get Raster","operationId":"get_raster_api_rasters__run_id___filename__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalysisOutputs":{"properties":{"change_mask":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Mask"},"change_intensity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Intensity"},"ndvi_t1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ndvi T1"},"ndvi_t2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ndvi T2"},"ndvi_diff":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ndvi Diff"},"rgb_t1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rgb T1"},"rgb_t2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rgb T2"},"change_geojson":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Geojson"}},"type":"object","title":"AnalysisOutputs"},"AnalysisResponse":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id"},"status":{"type":"string","title":"Status"},"study_area_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Study Area Id"},"study_area_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Study Area Name"},"year_t1":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year T1"},"year_t2":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year T2"},"aoi_bbox":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Aoi Bbox"},"study_area_km2":{"type":"number","title":"Study Area Km2"},"changed_area_km2":{"type":"number","title":"Changed Area Km2"},"change_percentage":{"type":"number","title":"Change Percentage"},"vegetation_change_percentage":{"type":"number","title":"Vegetation Change Percentage"},"built_up_change_percentage":{"type":"number","title":"Built Up Change Percentage"},"num_change_regions":{"type":"integer","title":"Num Change Regions"},"outputs":{"$ref":"#/components/schemas/AnalysisOutputs"},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics"},"change_geojson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Change Geojson"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["run_id","status","study_area_km2","changed_area_km2","change_percentage","vegetation_change_percentage","built_up_change_percentage","num_change_regions","outputs"],"title":"AnalysisResponse"},"Body_analyze_api_analyze_post":{"properties":{"image_t1":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Image T1"},"image_t2":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Image T2"},"use_samples":{"type":"boolean","title":"Use Samples","default":true},"method":{"type":"string","title":"Method","default":"baseline"},"study_area_id":{"type":"string","title":"Study Area Id","default":"muscat"},"year_t1":{"type":"integer","title":"Year T1","default":2020},"year_t2":{"type":"integer","title":"Year T2","default":2025},"bbox_west":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bbox West"},"bbox_south":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bbox South"},"bbox_east":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bbox East"},"bbox_north":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bbox North"}},"type":"object","title":"Body_analyze_api_analyze_post"},"GeoJSONResponse":{"properties":{"type":{"type":"string","title":"Type","default":"FeatureCollection"},"features":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Features"}},"type":"object","required":["features"],"title":"GeoJSONResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"database":{"type":"string","title":"Database"},"version":{"type":"string","title":"Version","default":"0.1.0"}},"type":"object","required":["status","database"],"title":"HealthResponse"},"NDVIResponse":{"properties":{"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"ndvi_t1_mean":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ndvi T1 Mean"},"ndvi_t2_mean":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ndvi T2 Mean"},"ndvi_diff_mean":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ndvi Diff Mean"},"vegetation_change_percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vegetation Change Percentage"},"raster_urls":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Raster Urls"}},"type":"object","title":"NDVIResponse"},"StudyAreaResponse":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"type":"string","title":"Name"},"bbox":{"items":{"type":"number"},"type":"array","title":"Bbox"},"crs":{"type":"string","title":"Crs"},"description":{"type":"string","title":"Description"},"has_sample_data":{"type":"boolean","title":"Has Sample Data","default":false},"imagery_bbox":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Imagery Bbox"}},"type":"object","required":["name","bbox","crs","description"],"title":"StudyAreaResponse"},"StudyAreasListResponse":{"properties":{"areas":{"items":{"$ref":"#/components/schemas/StudyAreaResponse"},"type":"array","title":"Areas"},"available_years":{"items":{"type":"integer"},"type":"array","title":"Available Years"}},"type":"object","required":["areas","available_years"],"title":"StudyAreasListResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}