{"openapi":"3.1.0","info":{"title":"GeoTIFF WMS API","description":"MapServer/MapScript WMS service for uploaded GeoTIFFs. Supports WMS, WCS, WFS, terrain tiles, and NetCDF point queries.","version":"1.0.0"},"paths":{"/token":{"post":{"tags":["auth"],"summary":"Issue Token","description":"Issue an access token using OAuth2 password flow (token is the username).","operationId":"issue_token_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_issue_token_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/login":{"post":{"tags":["auth"],"summary":"Login","description":"Alias for /token to make Swagger UI login flow explicit.","operationId":"login_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["config"],"summary":"Health","description":"Liveness endpoint for container/service health checks.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/config":{"get":{"tags":["config"],"summary":"Get Config","description":"Expose read-only server configuration values used by the frontend/UI.","operationId":"get_config_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["config"],"summary":"Update Config","description":"Update server configuration values and persist them.","operationId":"update_config_config_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/config/reset":{"post":{"tags":["config"],"summary":"Reset Config","description":"Reset persisted server configuration back to default values.","operationId":"reset_config_config_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["config"],"summary":"Root Redirect","description":"Send users to the UI when served from a browser.","operationId":"root_redirect__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/storage/cleanup-tmp":{"post":{"tags":["config"],"summary":"Cleanup Tmp Files","description":"Remove stale .tmp files under DATA_ROOT.","operationId":"cleanup_tmp_files_storage_cleanup_tmp_post","parameters":[{"name":"older_than_hours","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":24,"title":"Older Than Hours"}},{"name":"recursive","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Recursive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/csw-search":{"post":{"tags":["datasets"],"summary":"Search Csw Catalog","description":"Search a CSW catalogue using a structured JSON payload and paginated response.","operationId":"search_csw_catalog_datasets_csw_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CswSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets":{"get":{"tags":["datasets"],"summary":"List Datasets","description":"List datasets, with optional server-side pagination and search.","operationId":"list_datasets_datasets_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"match","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match"}},{"name":"bands","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Bands"}},{"name":"include_terrain","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Terrain"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Dir"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]},"post":{"tags":["datasets"],"summary":"Upload Dataset","description":"Upload a GeoTIFF, inspect metadata, register it, and return WMS usage URLs.","operationId":"upload_dataset_datasets_post","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_dataset_datasets_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/duplicates":{"get":{"tags":["datasets"],"summary":"List Dataset Duplicates","description":"Report duplicate datasets by matching SHA-256 hashes.","operationId":"list_dataset_duplicates_datasets_duplicates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/hyspex-missing-variants":{"get":{"tags":["datasets"],"summary":"List Hyspex Missing Variants","description":"Report identifiers missing RGB or Z variants.","operationId":"list_hyspex_missing_variants_datasets_hyspex_missing_variants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/rehash":{"post":{"tags":["datasets"],"summary":"Rehash Datasets","description":"Recompute SHA-256 hashes for all datasets and persist the manifest.","operationId":"rehash_datasets_datasets_rehash_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/prune-missing":{"post":{"tags":["datasets"],"summary":"Prune Missing Datasets","description":"Remove dataset entries whose files are missing on disk.","operationId":"prune_missing_datasets_datasets_prune_missing_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/resync":{"post":{"tags":["datasets"],"summary":"Resync Datasets","description":"Rebuild dataset manifest from files on disk.","operationId":"resync_datasets_datasets_resync_post","parameters":[{"name":"refresh_csw","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Refresh Csw"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/from-string":{"post":{"tags":["datasets"],"summary":"Add Dataset From String","description":"Register a dataset by copying an existing GeoTIFF path visible in runtime filesystem.","operationId":"add_dataset_from_string_datasets_from_string_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetStringRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/nbs-sentinel-quicklook-csw":{"post":{"tags":["datasets"],"summary":"Add Datasets From Nbs Sentinel Quicklook Csw","description":"Query a CSW endpoint by identifier and register NBS Sentinel quicklook GeoTIFFs.","operationId":"add_datasets_from_nbs_sentinel_quicklook_csw_datasets_nbs_sentinel_quicklook_csw_post","parameters":[{"name":"identifier","in":"query","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/nbs-sentinel-nc-csw":{"post":{"tags":["datasets"],"summary":"Add Dataset From Nbs Sentinel Nc Csw","description":"Resolve one NBS Sentinel CSW record and use quicklook-first, SAFE-second routing for S1.","operationId":"add_dataset_from_nbs_sentinel_nc_csw_datasets_nbs_sentinel_nc_csw_post","parameters":[{"name":"identifier","in":"query","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}},{"name":"variable","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Variable"}},{"name":"method","in":"query","required":false,"schema":{"type":"string","default":"mean","title":"Method"}},{"name":"resolution","in":"query","required":false,"schema":{"type":"number","default":10.0,"title":"Resolution"}},{"name":"bounds_strategy","in":"query","required":false,"schema":{"type":"string","default":"rounded","title":"Bounds Strategy"}},{"name":"chunk_size","in":"query","required":false,"schema":{"type":"integer","default":500000,"title":"Chunk Size"}},{"name":"extent_strategy","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Strategy"}},{"name":"extent_engine","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Engine"}},{"name":"extent_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Extent Workers"}},{"name":"tile_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tile Size"}},{"name":"auto_tile_size","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Auto Tile Size"}},{"name":"force_chunking","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Force Chunking"}},{"name":"parallel_mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parallel Mode"}},{"name":"parallel_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Workers"}},{"name":"use_numba","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Numba"}},{"name":"gdal_num_threads","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gdal Num Threads"}},{"name":"warp_memory_limit_mb","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Warp Memory Limit Mb"}},{"name":"nodata_val","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nodata Val"}},{"name":"output_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"}},{"name":"implementation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Implementation"}},{"name":"build_terrain_tiles","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Build Terrain Tiles"}},{"name":"allow_duplicates","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Duplicates"}},{"name":"submit","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Submit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/nbs-sentinel-safe-csw":{"post":{"tags":["datasets"],"summary":"Add Dataset From Nbs Sentinel Safe Csw","description":"Resolve one NBS Sentinel CSW record and submit a SAFE-first quicklook job.","operationId":"add_dataset_from_nbs_sentinel_safe_csw_datasets_nbs_sentinel_safe_csw_post","parameters":[{"name":"identifier","in":"query","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}},{"name":"variable","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Variable"}},{"name":"products_json","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Products Json"}},{"name":"output_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"}},{"name":"parallel_mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parallel Mode"}},{"name":"parallel_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Workers"}},{"name":"use_numba","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Numba"}},{"name":"gdal_num_threads","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gdal Num Threads"}},{"name":"warp_memory_limit_mb","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Warp Memory Limit Mb"}},{"name":"histogram_stretch","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Histogram Stretch"}},{"name":"build_terrain_tiles","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Build Terrain Tiles"}},{"name":"allow_duplicates","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Duplicates"}},{"name":"submit","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Submit"}},{"name":"prefer_local_archive","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Prefer Local Archive"}},{"name":"include_netcdf_context","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Netcdf Context"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/sentinel-csw":{"post":{"tags":["datasets"],"summary":"Add Datasets From Sentinel Csw","description":"Backward-compatible alias for the NBS Sentinel quicklook CSW GeoTIFF route.","operationId":"add_datasets_from_sentinel_csw_datasets_sentinel_csw_post","parameters":[{"name":"resource_id","in":"query","required":true,"schema":{"type":"string","title":"Resource Id"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/hyspex-csw":{"post":{"tags":["datasets"],"summary":"Add Dataset From Hyspex Csw","description":"Query HySpex CSW and build a nc-to-geotiff payload using the OPeNDAP URL.","operationId":"add_dataset_from_hyspex_csw_datasets_hyspex_csw_post","parameters":[{"name":"resource_id","in":"query","required":true,"schema":{"type":"string","title":"Resource Id"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}},{"name":"variable","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Variable"}},{"name":"method","in":"query","required":false,"schema":{"type":"string","default":"mean","title":"Method"}},{"name":"resolution","in":"query","required":false,"schema":{"type":"number","default":10.0,"title":"Resolution"}},{"name":"bounds_strategy","in":"query","required":false,"schema":{"type":"string","default":"rounded","title":"Bounds Strategy"}},{"name":"chunk_size","in":"query","required":false,"schema":{"type":"integer","default":500000,"title":"Chunk Size"}},{"name":"extent_strategy","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Strategy"}},{"name":"extent_engine","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Engine"}},{"name":"extent_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Extent Workers"}},{"name":"tile_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tile Size"}},{"name":"auto_tile_size","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Auto Tile Size"}},{"name":"force_chunking","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Force Chunking"}},{"name":"parallel_mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parallel Mode"}},{"name":"parallel_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Workers"}},{"name":"use_numba","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Numba"}},{"name":"nodata_val","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nodata Val"}},{"name":"output_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"}},{"name":"implementation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Implementation"}},{"name":"build_terrain_tiles","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Build Terrain Tiles"}},{"name":"allow_duplicates","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Duplicates"}},{"name":"submit","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Submit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/hyspex-csw-parent":{"post":{"tags":["datasets"],"summary":"Add Datasets From Hyspex Parent","description":"Bulk-register child CSW records by parent identifier (two jobs per child).","operationId":"add_datasets_from_hyspex_parent_datasets_hyspex_csw_parent_post","parameters":[{"name":"parent_id","in":"query","required":true,"schema":{"type":"string","title":"Parent Id"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}},{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}},{"name":"campaign_total_children","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Campaign Total Children"}},{"name":"start_position","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Start Position"}},{"name":"max_children","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Max Children"}},{"name":"method","in":"query","required":false,"schema":{"type":"string","default":"mean","title":"Method"}},{"name":"resolution","in":"query","required":false,"schema":{"type":"number","default":1.0,"title":"Resolution"}},{"name":"bounds_strategy","in":"query","required":false,"schema":{"type":"string","default":"rounded","title":"Bounds Strategy"}},{"name":"chunk_size","in":"query","required":false,"schema":{"type":"integer","default":1000000,"title":"Chunk Size"}},{"name":"extent_strategy","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"compute","title":"Extent Strategy"}},{"name":"extent_engine","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"dask","title":"Extent Engine"}},{"name":"extent_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":8,"title":"Extent Workers"}},{"name":"tile_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":256,"title":"Tile Size"}},{"name":"auto_tile_size","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Auto Tile Size"}},{"name":"force_chunking","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Force Chunking"}},{"name":"parallel_mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parallel Mode"}},{"name":"parallel_workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Workers"}},{"name":"use_numba","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Numba"}},{"name":"allow_duplicates","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Duplicates"}},{"name":"nodata_val","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nodata Val"}},{"name":"output_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"}},{"name":"implementation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Implementation"}},{"name":"submit","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Submit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/{dataset_id}/sample":{"get":{"tags":["datasets"],"summary":"Sample Dataset","description":"Sample source raster values at lon/lat for a registered dataset.","operationId":"sample_dataset_datasets__dataset_id__sample_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/extent.geojson":{"get":{"tags":["datasets"],"summary":"Dataset Extent Geojson","description":"Return a GeoJSON extent polygon for a dataset.","operationId":"dataset_extent_geojson_datasets__dataset_id__extent_geojson_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/thumbnail.png":{"get":{"tags":["datasets"],"summary":"Dataset Thumbnail","description":"Return a PNG thumbnail generated from the source GeoTIFF.","operationId":"dataset_thumbnail_datasets__dataset_id__thumbnail_png_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":1024,"minimum":32,"default":128,"title":"Width"}},{"name":"height","in":"query","required":false,"schema":{"type":"integer","maximum":1024,"minimum":32,"default":128,"title":"Height"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}":{"delete":{"tags":["datasets"],"summary":"Delete Dataset","description":"Delete a dataset and cleanup uploaded raster and derived terrain artifacts.","operationId":"delete_dataset_datasets__dataset_id__delete","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"delete_terrain","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Delete Terrain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/{dataset_id}/seed-mapcache":{"post":{"tags":["datasets"],"summary":"Seed Mapcache Tiles","description":"Trigger MapCache tile seeding for a dataset.","operationId":"seed_mapcache_tiles_datasets__dataset_id__seed_mapcache_post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"minzoom","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Minzoom"}},{"name":"maxzoom","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maxzoom"}},{"name":"workers","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":64,"minimum":1},{"type":"null"}],"title":"Workers"}},{"name":"max_tiles","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Max Tiles"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/query-point":{"post":{"tags":["datasets"],"summary":"Query Dataset Point","operationId":"query_dataset_point_datasets__dataset_id__query_point_post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetcdfQueryDatasetPointRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/query-points":{"post":{"tags":["datasets"],"summary":"Query Dataset Points","operationId":"query_dataset_points_datasets__dataset_id__query_points_post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetcdfBatchQueryDatasetPointRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/query-point":{"post":{"tags":["datasets"],"summary":"Query Netcdf Point","operationId":"query_netcdf_point_datasets_query_point_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetcdfQueryPointRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/query-points":{"post":{"tags":["datasets"],"summary":"Query Netcdf Points","description":"Query multiple points against a NetCDF URL.","operationId":"query_netcdf_points_datasets_query_points_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetcdfBatchQueryPointRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/styles/{dataset_id}/{style_id}.sld":{"get":{"tags":["datasets"],"summary":"Style Sld","description":"Return an SLD document for a named colormap style.","operationId":"style_sld_styles__dataset_id___style_id__sld_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"style_id","in":"path","required":true,"schema":{"type":"string","title":"Style Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thumbnails/generate":{"post":{"tags":["datasets"],"summary":"Queue Thumbnail Generation","description":"Queue background thumbnail generation for selected datasets.","operationId":"queue_thumbnail_generation_thumbnails_generate_post","parameters":[{"name":"dataset_ids","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Dataset Ids"}},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":1024,"minimum":32,"default":256,"title":"Width"}},{"name":"height","in":"query","required":false,"schema":{"type":"integer","maximum":1024,"minimum":32,"default":256,"title":"Height"}},{"name":"recreate","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Recreate"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thumbnails":{"delete":{"tags":["datasets"],"summary":"Clear Thumbnail Cache","description":"Clear cached dataset thumbnails (memory + disk).","operationId":"clear_thumbnail_cache_thumbnails_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/from-nc-config":{"post":{"tags":["jobs"],"summary":"Add Dataset From Point Cloud Config","description":"Generate a GeoTIFF from point-cloud config JSON and register it as a dataset.","operationId":"add_dataset_from_point_cloud_config_datasets_from_nc_config_post","parameters":[{"name":"implementation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override processing implementation (classic|fast)","title":"Implementation"},"description":"Override processing implementation (classic|fast)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PointCloudConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/datasets/from-point-cloud-config":{"post":{"tags":["jobs"],"summary":"Add Dataset From Point Cloud Config","description":"Generate a GeoTIFF from point-cloud config JSON and register it as a dataset.","operationId":"add_dataset_from_point_cloud_config_datasets_from_point_cloud_config_post","parameters":[{"name":"implementation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override processing implementation (classic|fast)","title":"Implementation"},"description":"Override processing implementation (classic|fast)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PointCloudConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/terrain/merge":{"post":{"tags":["jobs"],"summary":"Merge Datasets To Terrain","description":"Merge multiple datasets into a single GeoTIFF and optionally build terrain tiles.","operationId":"merge_datasets_to_terrain_terrain_merge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeTerrainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/nc-to-geotiff":{"post":{"tags":["jobs"],"summary":"Enqueue Point Cloud Job","description":"Queue long-running NetCDF->GeoTIFF processing in Celery worker.","operationId":"enqueue_point_cloud_job_jobs_nc_to_geotiff_post","parameters":[{"name":"implementation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override processing implementation (classic|fast)","title":"Implementation"},"description":"Override processing implementation (classic|fast)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PointCloudConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/merge-terrain":{"post":{"tags":["jobs"],"summary":"Enqueue Merge Terrain Job","description":"Queue dataset merge + optional terrain generation in Celery worker.","operationId":"enqueue_merge_terrain_job_jobs_merge_terrain_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeTerrainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/mago-terrain":{"post":{"tags":["jobs"],"summary":"Enqueue Mago Terrain Job","description":"Queue mago terrain generation in Celery worker.","operationId":"enqueue_mago_terrain_job_jobs_mago_terrain_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagoTerrainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/hyspex-csw-parent":{"post":{"tags":["jobs"],"summary":"Queue Hyspex Parent Job","description":"Queue a HySpex parent scan as a background job.","operationId":"queue_hyspex_parent_job_jobs_hyspex_csw_parent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HyspexParentJobRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/hyspex-csw-campaigns/{campaign_id}":{"get":{"tags":["jobs"],"summary":"Get Hyspex Campaign Status","description":"Aggregate progress across all HySpex parent batches and child jobs in one campaign.","operationId":"get_hyspex_campaign_status_jobs_hyspex_csw_campaigns__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/hyspex-missing-variants":{"post":{"tags":["jobs"],"summary":"Queue Hyspex Missing Variants","description":"Queue nc-to-geotiff jobs for missing RGB/Z variants.","operationId":"queue_hyspex_missing_variants_jobs_hyspex_missing_variants_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HyspexMissingQueueRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/repair-csw-metadata":{"post":{"tags":["jobs"],"summary":"Queue Repair Csw Metadata","description":"Queue a background job to refresh CSW metadata for datasets.","operationId":"queue_repair_csw_metadata_jobs_repair_csw_metadata_post","parameters":[{"name":"dataset_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Dataset Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Job Status","description":"Return Celery job state and final result payload when complete.","operationId":"get_job_status_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]},"delete":{"tags":["jobs"],"summary":"Delete Job Record","description":"Delete one persisted job record from jobs registry.","operationId":"delete_job_record_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs":{"get":{"tags":["jobs"],"summary":"List Jobs","description":"List known async jobs, newest first.","operationId":"list_jobs_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/{job_id}/cancel":{"post":{"tags":["jobs"],"summary":"Cancel Job","description":"Request cancellation of a queued/running Celery job.","operationId":"cancel_job_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"force_kill","in":"query","required":false,"schema":{"type":"boolean","description":"If true, attempt SIGKILL on worker process","default":false,"title":"Force Kill"},"description":"If true, attempt SIGKILL on worker process"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/jobs/cleanup":{"post":{"tags":["jobs"],"summary":"Cleanup Jobs","description":"Remove job records by status and/or age (hours).","operationId":"cleanup_jobs_jobs_cleanup_post","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"older_than_hours","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Older Than Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/mapcache/reload":{"post":{"tags":["mapcache"],"summary":"Reload Mapcache","description":"Regenerate mapcache.xml (MapCache container reloads via file watcher).","operationId":"reload_mapcache_mapcache_reload_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/mapcache/wms":{"get":{"tags":["mapcache"],"summary":"Mapcache Wms Proxy","description":"Proxy WMS requests to MapCache to avoid browser CORS issues.","operationId":"mapcache_wms_proxy_mapcache_wms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mapcache/cache/layers":{"get":{"tags":["mapcache"],"summary":"List Cache Layers","description":"List tile cache layers present on disk.","operationId":"list_cache_layers_mapcache_cache_layers_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapcacheCacheLayersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mapcache"],"summary":"List Cache Layers Post","description":"List tile cache layers (POST variant for structured filters).","operationId":"list_cache_layers_post_mapcache_cache_layers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapcacheCacheLayersRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/mapcache/cache/cleanup":{"post":{"tags":["mapcache"],"summary":"Cleanup Cache","description":"Remove old or unused tile cache files.","operationId":"cleanup_cache_mapcache_cache_cleanup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapcacheCacheCleanupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/mapcache/cache/cleanup-layers":{"post":{"tags":["mapcache"],"summary":"Cleanup Cache Layers","description":"Remove tile cache directories for specific layers.\n\nIf `?run_async=true` is present the request will enqueue a Celery job and return a `job_id`.\nOtherwise the removal is executed synchronously and returns the removed list.","operationId":"cleanup_cache_layers_mapcache_cache_cleanup_layers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapcacheCacheCleanupLayersRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/mapcache/{dataset_id}":{"get":{"tags":["mapcache"],"summary":"Mapcache Dataset Wms","description":"Proxy dataset-scoped WMS requests to MapCache.","operationId":"mapcache_dataset_wms_mapcache__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/terrain":{"get":{"tags":["terrain"],"summary":"List Terrain Tilesets","description":"List generated terrain tilesets.","operationId":"list_terrain_tilesets_terrain_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2Password":[]}]}},"/terrain/{dataset_id}":{"delete":{"tags":["terrain"],"summary":"Delete Terrain Tileset","description":"Delete terrain tiles and manifest entry for a dataset.","operationId":"delete_terrain_tileset_terrain__dataset_id__delete","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/terrain/{dataset_id}/generate":{"post":{"tags":["terrain"],"summary":"Generate Terrain Tiles","description":"Generate MapLibre-compatible Terrain RGB tiles from a georeferenced raster.","operationId":"generate_terrain_tiles_terrain__dataset_id__generate_post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"minzoom","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Minzoom"}},{"name":"maxzoom","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Maxzoom"}},{"name":"tile_size","in":"query","required":false,"schema":{"type":"integer","default":256,"title":"Tile Size"}},{"name":"mbtiles","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mbtiles"}},{"name":"workers","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Workers"}},{"name":"preprocess","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Preprocess"}},{"name":"min_elev","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Min Elev"}},{"name":"max_elev","in":"query","required":false,"schema":{"type":"number","default":2000.0,"title":"Max Elev"}},{"name":"fill_nodata","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Fill Nodata"}},{"name":"smooth","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Smooth"}},{"name":"smooth_sigma","in":"query","required":false,"schema":{"type":"number","default":1.0,"title":"Smooth Sigma"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/terrain/mago":{"get":{"tags":["terrain"],"summary":"List Mago Terrain","description":"List available mago-3d-terrainer output directories.","operationId":"list_mago_terrain_terrain_mago_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["terrain"],"summary":"Generate Mago Terrain","description":"Generate terrain tiles using mago-3d-terrainer inside Docker Compose.","operationId":"generate_mago_terrain_terrain_mago_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagoTerrainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/terrain/mago/delete":{"post":{"tags":["terrain"],"summary":"Delete Mago Outputs","description":"Delete one or more mago-3d-terrainer output directories.","operationId":"delete_mago_outputs_terrain_mago_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagoDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/terrain/{dataset_id}/tilejson.json":{"get":{"tags":["terrain"],"summary":"Terrain Tilejson","description":"Return TileJSON metadata for a generated terrain tileset.","operationId":"terrain_tilejson_terrain__dataset_id__tilejson_json_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/terrain/{dataset_id}/mbtiles/{z}/{x}/{y}.png":{"get":{"tags":["terrain"],"summary":"Terrain Mbtiles Tile","description":"Serve one terrain tile from MBTiles storage using XYZ URL addressing.","operationId":"terrain_mbtiles_tile_terrain__dataset_id__mbtiles__z___x___y__png_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/terrain/{dataset_id}/unpack-mbtiles":{"post":{"tags":["terrain"],"summary":"Unpack Mbtiles","description":"Convert MBTiles backend into unpacked XYZ directory backend for direct file serving.","operationId":"unpack_mbtiles_terrain__dataset_id__unpack_mbtiles_post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2Password":[]}]}},"/terrain/{dataset_id}/tiles/{z}/{x}/{y}.png":{"get":{"tags":["terrain"],"summary":"Terrain Tile","description":"Serve one terrain tile from directory backend.","operationId":"terrain_tile_terrain__dataset_id__tiles__z___x___y__png_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cesium/csw-search":{"get":{"tags":["cesium"],"summary":"Cesium Csw Search","description":"Render a Cesium globe UI for querying a CSW catalogue with bbox drawing.","operationId":"cesium_csw_search_cesium_csw_search_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/cesium/hello":{"get":{"tags":["cesium"],"summary":"Cesium Hello","description":"Render a minimal Cesium globe to verify basic viewer rendering.","operationId":"cesium_hello_cesium_hello_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/cesium/ion":{"get":{"tags":["cesium"],"summary":"Cesium Ion","description":"Render a Cesium globe using the default Ion imagery (requires token).","operationId":"cesium_ion_cesium_ion_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/cesium/wms":{"get":{"tags":["cesium"],"summary":"Cesium Wms Test","description":"Render a Cesium globe with Ion imagery and WMS overlays (no terrain).","operationId":"cesium_wms_test_cesium_wms_get","parameters":[{"name":"wms_layer","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Wms Layer"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cesium/terrain-test":{"get":{"tags":["cesium"],"summary":"Cesium Terrain Test","description":"Render a minimal Cesium viewer using CesiumTerrainProvider.fromUrl.","operationId":"cesium_terrain_test_cesium_terrain_test_get","parameters":[{"name":"terrain_url","in":"query","required":false,"schema":{"type":"string","default":"","title":"Terrain Url"}},{"name":"wms_layer","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Wms Layer"}},{"name":"wfs_mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wfs Mode"}},{"name":"use_mapcache","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Use Mapcache"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/maplibre/view":{"get":{"tags":["cesium"],"summary":"Maplibre View","description":"Render the MapLibre viewer page for one or more terrain datasets and optional WMS overlays.","operationId":"maplibre_view_maplibre_view_get","parameters":[{"name":"terrain","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Terrain"}},{"name":"wms_layer","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Wms Layer"}},{"name":"use_mapcache","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Use Mapcache"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ogc/csw-info":{"get":{"tags":["ogc"],"summary":"Csw Record Info","description":"Render a human-readable page for a single CSW record fetched by identifier.","operationId":"csw_record_info_ogc_csw_info_get","parameters":[{"name":"identifier","in":"query","required":true,"schema":{"type":"string","description":"CSW record identifier","title":"Identifier"},"description":"CSW record identifier"},{"name":"endpoint","in":"query","required":false,"schema":{"type":"string","description":"CSW endpoint URL (defaults to server default)","default":"","title":"Endpoint"},"description":"CSW endpoint URL (defaults to server default)"}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wms/multi":{"get":{"tags":["ogc"],"summary":"Wms Dispatch Multi","description":"Handle WMS requests for multiple datasets in one mapfile.","operationId":"wms_dispatch_multi_wms_multi_get","parameters":[{"name":"dataset_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Dataset Id"}},{"name":"datasets","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datasets"}},{"name":"extent_mode","in":"query","required":false,"schema":{"type":"string","default":"individual","title":"Extent Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ogc"],"summary":"Wms Dispatch Multi Post","description":"Handle WMS requests for multiple datasets (POST body with dataset_ids).","operationId":"wms_dispatch_multi_post_wms_multi_post","parameters":[{"name":"extent_mode","in":"query","required":false,"schema":{"type":"string","default":"individual","title":"Extent Mode"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiDatasetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wfs/multi":{"get":{"tags":["ogc"],"summary":"Wfs Dispatch Multi","description":"Handle WFS requests for multiple datasets in one mapfile.","operationId":"wfs_dispatch_multi_wfs_multi_get","parameters":[{"name":"dataset_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Dataset Id"}},{"name":"datasets","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datasets"}},{"name":"extent_mode","in":"query","required":false,"schema":{"type":"string","default":"individual","title":"Extent Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wcs/multi":{"get":{"tags":["ogc"],"summary":"Wcs Dispatch Multi","description":"Handle WCS requests for multiple datasets in one mapfile.","operationId":"wcs_dispatch_multi_wcs_multi_get","parameters":[{"name":"dataset_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Dataset Id"}},{"name":"datasets","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datasets"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ogc"],"summary":"Wcs Dispatch Multi Post","description":"Handle WCS requests for multiple datasets (POST body with dataset_ids).","operationId":"wcs_dispatch_multi_post_wcs_multi_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiDatasetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wms/{dataset_id}":{"get":{"tags":["ogc"],"summary":"Wms Dispatch","description":"Handle WMS requests by building a mapObj and dispatching through MapScript.","operationId":"wms_dispatch_wms__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mapfiletest":{"get":{"tags":["ogc"],"summary":"Mapfiletest","description":"Serve a hardcoded mapfile for client testing.","operationId":"mapfiletest_mapfiletest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wfs/{dataset_id}":{"get":{"tags":["ogc"],"summary":"Wfs Dispatch","description":"Handle WFS requests by building a mapObj and dispatching through MapScript.","operationId":"wfs_dispatch_wfs__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wcs/{dataset_id}":{"get":{"tags":["ogc"],"summary":"Wcs Dispatch","description":"Handle WCS requests by building a mapObj and dispatching through MapScript.","operationId":"wcs_dispatch_wcs__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset 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_issue_token_token_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_issue_token_token_post"},"Body_login_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_login_post"},"Body_upload_dataset_datasets_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_dataset_datasets_post"},"ConfigUpdateRequest":{"properties":{"min_colormap_classes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Colormap Classes"},"max_upload_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Upload Mb"},"max_parallel":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel"},"wms_debug":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Wms Debug"},"mapcache_seed_minzoom":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mapcache Seed Minzoom"},"mapcache_seed_maxzoom":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mapcache Seed Maxzoom"},"mapcache_seed_workers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mapcache Seed Workers"},"mapcache_seed_on_ingest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mapcache Seed On Ingest"},"mapcache_seed_max_tiles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mapcache Seed Max Tiles"},"mapcache_request_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mapcache Request Timeout"},"mapcache_public_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mapcache Public Url"},"hyspex_parent_scan_multiplier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hyspex Parent Scan Multiplier"},"hyspex_parent_scan_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hyspex Parent Scan Limit"},"task_parallel_workers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Task Parallel Workers"},"csw_filename_prefix_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Csw Filename Prefix Mode"},"wms_use_mapcache":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Wms Use Mapcache"},"thumbnail_cache_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Cache Mode"},"thumbnail_cache_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Cache Dir"},"thumbnail_cache_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thumbnail Cache Max"},"point_query_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Point Query Public"},"netcdf_cache_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Netcdf Cache Max"}},"type":"object","title":"ConfigUpdateRequest","description":"Request body for updating server configuration values."},"CswSearchBBox":{"properties":{"minx":{"type":"number","title":"Minx"},"miny":{"type":"number","title":"Miny"},"maxx":{"type":"number","title":"Maxx"},"maxy":{"type":"number","title":"Maxy"}},"type":"object","required":["minx","miny","maxx","maxy"],"title":"CswSearchBBox","description":"Bounding box for structured CSW search requests."},"CswSearchRequest":{"properties":{"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"start_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Datetime"},"end_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Datetime"},"bbox":{"anyOf":[{"$ref":"#/components/schemas/CswSearchBBox"},{"type":"null"}]},"anytext":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anytext"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":25},"offset":{"type":"integer","minimum":0.0,"title":"Offset","default":0}},"type":"object","title":"CswSearchRequest","description":"Structured CSW search request with paginated response controls."},"DatasetStringRequest":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"DatasetStringRequest","description":"Request body for creating a dataset from an existing file path string."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HyspexMissingQueueRequest":{"properties":{"identifiers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Identifiers"},"resolution":{"type":"number","title":"Resolution","default":1.0},"bounds_strategy":{"type":"string","title":"Bounds Strategy","default":"rounded"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000000},"extent_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Strategy","default":"compute"},"extent_engine":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Engine","default":"numba"},"extent_workers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Extent Workers","default":8},"parallel_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parallel Mode","default":"numba"},"parallel_workers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Workers","default":8},"use_numba":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Numba","default":false},"tile_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tile Size","default":256},"auto_tile_size":{"type":"boolean","title":"Auto Tile Size","default":false},"force_chunking":{"type":"boolean","title":"Force Chunking","default":true}},"type":"object","title":"HyspexMissingQueueRequest","description":"Request body to queue missing HySpex variants."},"HyspexParentJobRequest":{"properties":{"parent_id":{"type":"string","title":"Parent Id"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"},"campaign_total_children":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Total Children"},"start_position":{"type":"integer","title":"Start Position","default":1},"max_children":{"type":"integer","title":"Max Children","default":10},"method":{"type":"string","title":"Method","default":"mean"},"resolution":{"type":"number","title":"Resolution","default":1.0},"bounds_strategy":{"type":"string","title":"Bounds Strategy","default":"rounded"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000000},"extent_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Strategy","default":"compute"},"extent_engine":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extent Engine","default":"numba"},"extent_workers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Extent Workers","default":8},"parallel_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parallel Mode","default":"numba"},"parallel_workers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Workers","default":8},"use_numba":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Numba","default":false},"tile_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tile Size","default":256},"auto_tile_size":{"type":"boolean","title":"Auto Tile Size","default":false},"force_chunking":{"type":"boolean","title":"Force Chunking","default":true},"nodata_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nodata Val"},"output_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"},"implementation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Implementation"},"allow_duplicates":{"type":"boolean","title":"Allow Duplicates","default":false},"submit":{"type":"boolean","title":"Submit","default":true}},"type":"object","required":["parent_id"],"title":"HyspexParentJobRequest","description":"Request body for queued HySpex CSW parent scan jobs."},"MagoDeleteRequest":{"properties":{"names":{"items":{"type":"string"},"type":"array","title":"Names"}},"type":"object","required":["names"],"title":"MagoDeleteRequest","description":"Request body for deleting mago-3d-terrainer outputs."},"MagoTerrainRequest":{"properties":{"dataset_ids":{"items":{"type":"string"},"type":"array","title":"Dataset Ids"},"output_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Name"},"overwrite":{"type":"boolean","title":"Overwrite","default":false},"max_depth":{"type":"integer","title":"Max Depth","default":14},"reproject_to_wgs84":{"type":"boolean","title":"Reproject To Wgs84","default":true},"merge_to_vrt":{"type":"boolean","title":"Merge To Vrt","default":false}},"type":"object","required":["dataset_ids"],"title":"MagoTerrainRequest","description":"Request body for generating terrain using mago-3d-terrainer."},"MapcacheCacheCleanupLayersRequest":{"properties":{"layers":{"items":{"type":"string"},"type":"array","title":"Layers","description":"Layer names to remove from cache"},"dry_run":{"type":"boolean","title":"Dry Run","description":"If true, do not delete; only report","default":true}},"type":"object","title":"MapcacheCacheCleanupLayersRequest"},"MapcacheCacheCleanupRequest":{"properties":{"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix","description":"Optional path prefix inside cache to target (layer) - relative to cache root"},"older_than_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Older Than Days","description":"Only target files older than this many days"},"dry_run":{"type":"boolean","title":"Dry Run","description":"If true, do not delete; only report","default":true},"max_files":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Files","description":"Maximum number of files to delete (or report)"}},"type":"object","title":"MapcacheCacheCleanupRequest"},"MapcacheCacheLayersRequest":{"properties":{"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix","description":"Optional layer prefix to filter"},"include_counts":{"type":"boolean","title":"Include Counts","description":"Include file_count and latest_mtime per layer (slower)","default":false},"max_layers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Layers","description":"Maximum number of layers to return"}},"type":"object","title":"MapcacheCacheLayersRequest"},"MergeTerrainRequest":{"properties":{"dataset_ids":{"items":{"type":"string"},"type":"array","title":"Dataset Ids"},"output_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"},"build_terrain_tiles":{"type":"boolean","title":"Build Terrain Tiles","default":true},"max_overlap_pct":{"type":"number","title":"Max Overlap Pct","default":0.1},"max_distance_km":{"type":"number","title":"Max Distance Km","default":10.0},"resolution_tolerance":{"type":"number","title":"Resolution Tolerance","default":0.01}},"type":"object","required":["dataset_ids"],"title":"MergeTerrainRequest","description":"Request body for merging multiple datasets into one terrain-ready GeoTIFF."},"MultiDatasetRequest":{"properties":{"dataset_ids":{"items":{"type":"string"},"type":"array","title":"Dataset Ids"}},"type":"object","required":["dataset_ids"],"title":"MultiDatasetRequest","description":"Request body for multi-dataset WMS/WCS dispatch."},"NetcdfBatchQueryDatasetPointRequest":{"properties":{"points":{"items":{"additionalProperties":{"type":"number"},"type":"object"},"type":"array","title":"Points"},"variables":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Variables"},"max_distance_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Distance M"},"allow_outside_tolerance":{"type":"boolean","title":"Allow Outside Tolerance","default":false},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"type":"object","required":["points"],"title":"NetcdfBatchQueryDatasetPointRequest","description":"Request body for querying multiple points against a dataset."},"NetcdfBatchQueryPointRequest":{"properties":{"netcdf_url":{"type":"string","title":"Netcdf Url"},"points":{"items":{"additionalProperties":{"type":"number"},"type":"object"},"type":"array","title":"Points"},"variables":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Variables"},"max_distance_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Distance M"},"allow_outside_tolerance":{"type":"boolean","title":"Allow Outside Tolerance","default":false},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"type":"object","required":["netcdf_url","points"],"title":"NetcdfBatchQueryPointRequest","description":"Request body for querying multiple points against a NetCDF."},"NetcdfQueryDatasetPointRequest":{"properties":{"longitude":{"type":"number","title":"Longitude"},"latitude":{"type":"number","title":"Latitude"},"variables":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Variables"},"max_distance_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Distance M"},"allow_outside_tolerance":{"type":"boolean","title":"Allow Outside Tolerance","default":false},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"type":"object","required":["longitude","latitude"],"title":"NetcdfQueryDatasetPointRequest","description":"Request body for querying a registered dataset by lon/lat."},"NetcdfQueryPointRequest":{"properties":{"netcdf_url":{"type":"string","title":"Netcdf Url"},"longitude":{"type":"number","title":"Longitude"},"latitude":{"type":"number","title":"Latitude"},"variables":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Variables"},"max_distance_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Distance M"},"allow_outside_tolerance":{"type":"boolean","title":"Allow Outside Tolerance","default":false},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"type":"object","required":["netcdf_url","longitude","latitude"],"title":"NetcdfQueryPointRequest","description":"Request body for querying a NetCDF by lon/lat."},"PointCloudConfigRequest":{"properties":{"config":{"additionalProperties":true,"type":"object","title":"Config"},"input_dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Dataset"},"source_dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Dataset"},"safe_source_dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Safe Source Dataset"},"opendap_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opendap Url"},"output_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output File"},"build_terrain_tiles":{"type":"boolean","title":"Build Terrain Tiles","default":false},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identifier"},"abstract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstract"},"csw_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Csw Endpoint"},"allow_duplicates":{"type":"boolean","title":"Allow Duplicates","default":false}},"type":"object","required":["config"],"title":"PointCloudConfigRequest","description":"Request body for generating a GeoTIFF from point-cloud config and registering it."},"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"}},"securitySchemes":{"OAuth2Password":{"type":"oauth2","flows":{"password":{"tokenUrl":"/token","scopes":{}}}}}}}