{"openapi":"3.1.0","info":{"title":"PostGIS Proximity API","version":"0.5.0"},"paths":{"/layers":{"get":{"tags":["Proximity"],"summary":"List Layers","operationId":"list_layers_layers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LayerInfo"},"type":"array","title":"Response List Layers Layers Get"}}}}}}},"/proximity":{"get":{"tags":["Proximity"],"summary":"Proximity query on a layer","operationId":"proximity_query_proximity_get","parameters":[{"name":"layer","in":"query","required":true,"schema":{"type":"string","description":"Layer name","title":"Layer"},"description":"Layer name"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","description":"WGS84 latitude","default":37.5079,"title":"Lat"},"description":"WGS84 latitude"},{"name":"lon","in":"query","required":false,"schema":{"type":"number","description":"WGS84 longitude","default":15.083,"title":"Lon"},"description":"WGS84 longitude"},{"name":"radius","in":"query","required":false,"schema":{"type":"number","description":"Radius in meters","default":1000.0,"title":"Radius"},"description":"Radius in meters"},{"name":"include_geometry","in":"query","required":false,"schema":{"type":"boolean","description":"Includi geometria completa","default":true,"title":"Include Geometry"},"description":"Includi geometria completa"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProximityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intersect_multi":{"post":{"tags":["Proximity"],"summary":"Intersect Multi","operationId":"intersect_multi_intersect_multi_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiIntersectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiIntersectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proximity_stats":{"get":{"tags":["Proximity"],"summary":"Proximity Stats","operationId":"proximity_stats_proximity_stats_get","parameters":[{"name":"layer","in":"query","required":true,"schema":{"type":"string","description":"Layer name","title":"Layer"},"description":"Layer name"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"WGS84 latitude","title":"Lat"},"description":"WGS84 latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"WGS84 longitude","title":"Lon"},"description":"WGS84 longitude"},{"name":"radius","in":"query","required":true,"schema":{"type":"number","description":"Radius in meters","title":"Radius"},"description":"Radius in meters"},{"name":"group_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional field for aggregation","title":"Group By"},"description":"Optional field for aggregation"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProximityStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/livability_index":{"get":{"tags":["Proximity"],"summary":"Calculate livability index for specified area","operationId":"get_livability_index_livability_index_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"WGS84 latitude","title":"Lat"},"description":"WGS84 latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"WGS84 longitude","title":"Lon"},"description":"WGS84 longitude"},{"name":"radius","in":"query","required":true,"schema":{"type":"integer","description":"Radius in meters","title":"Radius"},"description":"Radius in meters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LivabilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/densities":{"get":{"tags":["Proximity"],"summary":"Get Densities","operationId":"get_densities_densities_get","parameters":[{"name":"layer","in":"query","required":true,"schema":{"type":"string","description":"Layer name (must contain 'geom' column)","title":"Layer"},"description":"Layer name (must contain 'geom' column)"},{"name":"grid_size_deg","in":"query","required":false,"schema":{"type":"number","description":"Grid size in degrees (default ~55m)","default":0.0005,"title":"Grid Size Deg"},"description":"Grid size in degrees (default ~55m)"},{"name":"target_srid","in":"query","required":false,"schema":{"type":"integer","description":"SRID for coordinate transformation (default 4326/WGS84)","default":4326,"title":"Target Srid"},"description":"SRID for coordinate transformation (default 4326/WGS84)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DensityResponse"},"title":"Response Get Densities Densities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/count_at":{"get":{"tags":["Proximity"],"summary":"Count At","operationId":"count_at_count_at_get","parameters":[{"name":"layers","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"},"description":"Layer names","title":"Layers"},"description":"Layer names"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"WGS84 latitude","title":"Lat"},"description":"WGS84 latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"WGS84 longitude","title":"Lon"},"description":"WGS84 longitude"},{"name":"radius","in":"query","required":false,"schema":{"type":"number","description":"Radius in meters","default":100.0,"title":"Radius"},"description":"Radius in meters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LayerCount"},"title":"Response Count At Count At Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/density_at":{"get":{"tags":["Proximity"],"summary":"Density At","operationId":"density_at_density_at_get","parameters":[{"name":"layers","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"},"description":"Layer names","title":"Layers"},"description":"Layer names"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"WGS84 latitude","title":"Lat"},"description":"WGS84 latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"WGS84 longitude","title":"Lon"},"description":"WGS84 longitude"},{"name":"radius","in":"query","required":false,"schema":{"type":"number","description":"Radius in meters","default":100.0,"title":"Radius"},"description":"Radius in meters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LayerDensity"},"title":"Response Density At Density At Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/points":{"get":{"tags":["Proximity"],"summary":"Get Points","operationId":"get_points_points_get","parameters":[{"name":"layer","in":"query","required":true,"schema":{"type":"string","description":"Layer name","title":"Layer"},"description":"Layer name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PointFeature"},"title":"Response Get Points Points Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/urban-problems":{"post":{"tags":["Data Ingestion"],"summary":"Report Urban Problem","operationId":"report_urban_problem_urban_problems_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_report_urban_problem_urban_problems_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/urban-problems/{problem_id}/image":{"get":{"tags":["Data Ingestion"],"summary":"Get Problem Image","operationId":"get_problem_image_urban_problems__problem_id__image_get","parameters":[{"name":"problem_id","in":"path","required":true,"schema":{"type":"integer","title":"Problem Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_report_urban_problem_urban_problems_post":{"properties":{"problem_data":{"type":"string","title":"Problem Data"},"image":{"type":"string","format":"binary","title":"Image"}},"type":"object","required":["problem_data"],"title":"Body_report_urban_problem_urban_problems_post"},"DensityResponse":{"properties":{"lat":{"type":"number","title":"Lat"},"lng":{"type":"number","title":"Lng"},"intensity":{"type":"number","title":"Intensity"}},"type":"object","required":["lat","lng","intensity"],"title":"DensityResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LayerCount":{"properties":{"layer_name":{"type":"string","title":"Layer Name","description":"Name of the layer"},"label":{"type":"string","title":"Label","description":"Display name of the layer"},"count":{"type":"integer","title":"Count","description":"Number of features in the layer within the specified radius"}},"type":"object","required":["layer_name","label","count"],"title":"LayerCount"},"LayerDensity":{"properties":{"layer_name":{"type":"string","title":"Layer Name","description":"Name of the layer"},"label":{"type":"string","title":"Label","description":"Display name of the layer"},"density":{"type":"number","title":"Density","description":"Density of features per hectare"}},"type":"object","required":["layer_name","label","density"],"title":"LayerDensity"},"LayerInfo":{"properties":{"layer_name":{"type":"string","title":"Layer Name","description":"Name of the table/layer"},"label":{"type":"string","title":"Label","description":"Display name for the layer"},"description":{"type":"string","title":"Description","description":"Description of the layer"}},"type":"object","required":["layer_name","label","description"],"title":"LayerInfo"},"LivabilityResponse":{"properties":{"livability_index":{"type":"number","title":"Livability Index","description":"Overall livability index (0-10)"},"details":{"additionalProperties":{"type":"number"},"type":"object","title":"Details","description":"Scores by macro-category"}},"type":"object","required":["livability_index","details"],"title":"LivabilityResponse"},"MultiIntersectRequest":{"properties":{"layers":{"items":{"type":"string"},"type":"array","title":"Layers","description":"List of layer names to intersect (minimum 2)"}},"type":"object","required":["layers"],"title":"MultiIntersectRequest"},"MultiIntersectResponse":{"properties":{"count":{"type":"integer","title":"Count"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results"}},"type":"object","required":["count","results"],"title":"MultiIntersectResponse"},"PointFeature":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"lat":{"type":"number","title":"Lat","description":"Latitude in WGS84"},"lng":{"type":"number","title":"Lng","description":"Longitude in WGS84"},"properties":{"additionalProperties":true,"type":"object","title":"Properties","description":"Feature properties"}},"type":"object","required":["lat","lng","properties"],"title":"PointFeature"},"ProximityResponse":{"properties":{"count":{"type":"integer","title":"Count","description":"Number of features in the specified area"},"features":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Features","description":"Features with WGS84 geometry"}},"type":"object","required":["count","features"],"title":"ProximityResponse"},"ProximityStats":{"properties":{"layer":{"type":"string","title":"Layer","description":"Layer name"},"lat":{"type":"number","title":"Lat","description":"WGS84 latitude"},"lon":{"type":"number","title":"Lon","description":"WGS84 longitude"},"radius":{"type":"number","title":"Radius","description":"Radius in meters"},"count":{"type":"integer","title":"Count","description":"Number of features in proximity area"},"total_area":{"type":"number","title":"Total Area","description":"Total area of features (m²)"},"numeric_stats":{"additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"type":"object","title":"Numeric Stats","description":"Statistics (min, max, mean) for numeric fields"},"group_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group By","description":"Optional field for aggregation"},"groups":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Groups","description":"Aggregated result by group_by value"}},"type":"object","required":["layer","lat","lon","radius","count","total_area"],"title":"ProximityStats"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"servers":[{"url":"http://localhost:8000"}]}