# API Specification v1.0 Basispad: `/api/v1` ## Projects ### GET /projects Geeft alle projecten terug. ### POST /projects Maakt een project aan. Body: ```json { "name": "Geel gebouwdetectie demo", "description": "Detectie en QA/QC van gebouwen in Geel", "region": "Kempen" } ``` ### GET /projects/{project_id} Geeft projectdetails terug. ### DELETE /projects/{project_id} Verwijdert een project en gekoppelde metadata. Bestanden moeten veilig afgehandeld worden. ## Areas ### GET /projects/{project_id}/areas Geeft analysegebieden van een project. ### POST /projects/{project_id}/areas Maakt analysegebied aan. Body: ```json { "name": "Geel Centrum", "geometry": { "type": "Polygon", "coordinates": [] } } ``` ### GET /areas/{area_id} Geeft gebieddetails. ## Datasets ### POST /projects/{project_id}/datasets/upload Uploadt raster of vector dataset. Multipart: - file - name - dataset_type - source ### GET /projects/{project_id}/datasets Lijst datasets. ### GET /datasets/{dataset_id} Datasetdetails. ### GET /datasets/{dataset_id}/metadata Metadata. ### POST /datasets/{dataset_id}/extract-metadata Start metadata extraction job. ## Reference Data ### POST /projects/{project_id}/reference/grb/fetch Haalt GRB-data op voor een area. Body: ```json { "area_id": "uuid", "layers": ["buildings"] } ``` ### POST /projects/{project_id}/reference/osm/fetch Haalt OSM-data op voor een area. ## Raster ### POST /datasets/{dataset_id}/raster/clip Clipt raster op area. ### POST /datasets/{dataset_id}/raster/tile Maakt tiles voor AI-inference. Body: ```json { "tile_size": 640, "overlap": 64, "area_id": "uuid" } ``` ### POST /datasets/{dataset_id}/raster/indices/ndvi V2: berekent NDVI. ## Vector ### POST /datasets/{dataset_id}/vector/clip Clipt vectorlaag op area. ### POST /datasets/{dataset_id}/vector/buffer Maakt buffers. ### POST /datasets/{dataset_id}/vector/validate Valideert geometrieën. ## Analysis ### POST /analysis/object-detection Start objectdetectie. Body: ```json { "project_id": "uuid", "area_id": "uuid", "dataset_id": "uuid", "model_id": "uuid-or-default", "classes": ["building"], "confidence_threshold": 0.35 } ``` ### POST /analysis/segmentation Start segmentatie. ### POST /analysis/change-detection Start change detection. ### GET /analysis/{analysis_run_id} Geeft runstatus en resultaten. ### GET /analysis/{analysis_run_id}/detections Geeft detecties als GeoJSON FeatureCollection. ### GET /analysis/{analysis_run_id}/segmentations Geeft segmentaties als GeoJSON FeatureCollection. ## QA/QC ### POST /analysis/{analysis_run_id}/quality-check Vergelijkt AI-resultaten met referentiedataset. Body: ```json { "reference_dataset_id": "uuid", "iou_threshold": 0.5, "class_mapping": { "building": "building" } } ``` ### GET /quality-checks/{quality_check_id} Geeft QA/QC-resultaten. ## Exports ### POST /exports/geojson Exporteert analysis output naar GeoJSON. ### POST /exports/yolo Exporteert annotaties naar YOLO-formaat. ### POST /exports/coco Exporteert annotaties naar COCO-formaat. ### GET /exports/{export_id}/download Download exportbestand. ## Jobs ### GET /jobs/{job_id} Geeft jobstatus. ### GET /projects/{project_id}/jobs Geeft jobs van een project.