{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/":{"get":{"tags":["System"],"summary":"Read Index","description":"Return openEO capabilities (JSON) or the landing page (HTML).","operationId":"read_index__get","responses":{"200":{"description":"Landing page (HTML) or navigation document (JSON)","content":{"text/html":{"schema":{"type":"string"}},"application/json":{"schema":{"$defs":{"Link":{"properties":{"href":{"type":"string","title":"Href"},"rel":{"type":"string","title":"Rel"},"title":{"type":"string","title":"Title"}},"type":"object","required":["href","rel","title"],"title":"Link","description":"Hypermedia link."}},"properties":{"message":{"type":"string","title":"Message"},"links":{"items":{"$ref":"#/$defs/Link"},"type":"array","title":"Links"}},"type":"object","required":["message","links"],"title":"RootResponse","description":"Root endpoint response with navigation links."}}}}}}},"/health":{"get":{"tags":["System"],"summary":"Health","description":"Return health status for container health checks.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}}}}}},"/info":{"get":{"tags":["System"],"summary":"Info","description":"Return application version and environment info.","operationId":"info_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppInfo"}}}}}}},"/.well-known/openeo":{"get":{"tags":["openEO","openEO"],"summary":"Well Known Openeo","description":"OpenEO service discovery — lets clients find the versioned API URL.","operationId":"well_known_openeo__well_known_openeo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Well Known Openeo  Well Known Openeo Get"}}}}}}},"/credentials/oidc":{"get":{"tags":["openEO","openEO"],"summary":"Credentials Oidc","description":"Return OIDC authentication providers (empty = open/anonymous access).","operationId":"credentials_oidc_credentials_oidc_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Credentials Oidc Credentials Oidc Get"}}}}}}},"/file_formats":{"get":{"tags":["openEO","openEO"],"summary":"File Formats","description":"Return supported input and output file formats.","operationId":"file_formats_file_formats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response File Formats File Formats Get"}}}}}}},"/service_types":{"get":{"tags":["openEO","openEO"],"summary":"Service Types","description":"Return supported secondary web service types (none currently).","operationId":"service_types_service_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Service Types Service Types Get"}}}}}}},"/me":{"get":{"tags":["openEO","openEO"],"summary":"Me","description":"Return basic account info for this open/anonymous backend.","operationId":"me_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Me Get"}}}}}}},"/stac":{"get":{"tags":["STAC"],"summary":"Get Stac Landing","description":"Return the STAC catalog landing page.","operationId":"get_stac_landing_stac_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StacCatalogResponse"}}}}}}},"/stac/catalog.json":{"get":{"tags":["STAC"],"summary":"Get Stac Catalog Json","description":"Return the STAC catalog landing page (catalog.json alias).","operationId":"get_stac_catalog_json_stac_catalog_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StacCatalogResponse"}}}}}}},"/stac/collections/{dataset_id}":{"get":{"tags":["STAC"],"summary":"Get Stac Collection","description":"Return one STAC collection document.","operationId":"get_stac_collection_stac_collections__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":{"type":"object","additionalProperties":true,"title":"Response Get Stac Collection Stac Collections  Dataset Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/collections":{"get":{"tags":["openEO","openEO"],"summary":"List Collections","description":"Return all published collections (openEO + STAC compatible).","operationId":"list_collections_collections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Collections Collections Get"}}}}}}},"/collections/{collection_id}":{"get":{"tags":["openEO","openEO"],"summary":"Get Collection","description":"Return one published collection.","operationId":"get_collection_collections__collection_id__get","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","title":"Collection Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Collection Collections  Collection Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs":{"get":{"tags":["openEO","openEO"],"summary":"List Jobs","description":"Return all openEO jobs.","operationId":"list_jobs_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenEOJobListResponse"}}}}}},"post":{"tags":["openEO","openEO"],"summary":"Create Job","description":"Create a new openEO job.","operationId":"create_job_jobs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenEOJobCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenEOJobRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}":{"get":{"tags":["openEO","openEO"],"summary":"Get Job","description":"Return one openEO job.","operationId":"get_job_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":{"$ref":"#/components/schemas/OpenEOJobRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["openEO","openEO"],"summary":"Update Job","description":"Update job metadata (title, description, process, etc.).","operationId":"update_job_jobs__job_id__patch","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenEOJobUpdate"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["openEO","openEO"],"summary":"Delete Job","description":"Delete a job and its results.","operationId":"delete_job_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/results":{"post":{"tags":["openEO","openEO"],"summary":"Start Job","description":"Queue a job for processing.","operationId":"start_job_jobs__job_id__results_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["openEO","openEO"],"summary":"Get Results","description":"Return result links for a finished job.","operationId":"get_results_jobs__job_id__results_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenEOJobResults"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["openEO","openEO"],"summary":"Cancel Job","description":"Cancel a running or queued job.","operationId":"cancel_job_jobs__job_id__results_delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/results/result.geojson":{"get":{"tags":["openEO","openEO"],"summary":"Download Geojson Result","description":"Serve the GeoJSON result file for a finished batch job.","operationId":"download_geojson_result_jobs__job_id__results_result_geojson_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"}}}}}}},"/jobs/{job_id}/results/result.zarr/{zarr_path}":{"get":{"tags":["openEO","openEO"],"summary":"Download Zarr Chunk","description":"Serve one file from within the Zarr result store (chunk or metadata).","operationId":"download_zarr_chunk_jobs__job_id__results_result_zarr__zarr_path__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"zarr_path","in":"path","required":true,"schema":{"type":"string","title":"Zarr Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/results/{filename}":{"get":{"tags":["openEO","openEO"],"summary":"Download Result File","description":"Serve a result file (NetCDF, GeoTIFF, PNG, CSV, GeoParquet) for a finished batch job.","operationId":"download_result_file_jobs__job_id__results__filename__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/process_graphs":{"get":{"tags":["openEO","openEO"],"summary":"List Workflows","description":"Return all stored workflows (user-defined processes).","operationId":"list_workflows_process_graphs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowListResponse"}}}}}}},"/process_graphs/{process_graph_id}":{"get":{"tags":["openEO","openEO"],"summary":"Get Workflow","description":"Return one workflow (user-defined process).","operationId":"get_workflow_process_graphs__process_graph_id__get","parameters":[{"name":"process_graph_id","in":"path","required":true,"schema":{"type":"string","title":"Process Graph Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["openEO","openEO"],"summary":"Put Workflow","description":"Store or replace a workflow (user-defined process).","operationId":"put_workflow_process_graphs__process_graph_id__put","parameters":[{"name":"process_graph_id","in":"path","required":true,"schema":{"type":"string","title":"Process Graph Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["openEO","openEO"],"summary":"Delete Workflow","description":"Delete a workflow (user-defined process).","operationId":"delete_workflow_process_graphs__process_graph_id__delete","parameters":[{"name":"process_graph_id","in":"path","required":true,"schema":{"type":"string","title":"Process Graph Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/result":{"post":{"tags":["openEO","openEO"],"summary":"Execute Synchronous","description":"Execute a process graph synchronously and return the result.\n\nReturns JSON for scalar/dict results, or an exported file for\nsynchronously-supported non-Zarr raster/vector formats.","operationId":"execute_synchronous_result_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Execute Synchronous Result Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/extent":{"get":{"tags":["Extent"],"summary":"Get Extent","description":"Return the configured extent for this Open Climate Service instance.","operationId":"get_extent_extent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtentRecord"}}}}}}},"/features":{"get":{"tags":["Features"],"summary":"List Feature Collections","description":"List the feature collections this instance holds.\n\nRegistered collections only. A GeoParquet file placed in the store directory by hand does\nnot appear: a record is what brings a collection into existence, so the store directory is\nnot an inbox.","operationId":"list_feature_collections_features_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCollectionListResponse"}}}}}}},"/features/{collection_id}":{"get":{"tags":["Features"],"summary":"Get Feature Collection","description":"Return one registered feature collection.","operationId":"get_feature_collection_features__collection_id__get","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","title":"Collection Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCollectionRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/features/{collection_id}/refresh":{"post":{"tags":["Features"],"summary":"Refresh Feature Collection","description":"Fetch a feature collection from its template's provider, creating or replacing it.\n\nPass ``Prefer: respond-async`` to queue it as a background job and get 202 with\n``Location: /ingestions/jobs/{id}``, as for ``POST /ingestions``. Refused with 404 for an\nunknown template and 400 for one naming no provider this instance has, before anything is\nqueued; refused on a read-only instance like every other write.","operationId":"refresh_feature_collection_features__collection_id__refresh_post","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","title":"Collection Id"}},{"name":"publish","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Publish"}},{"name":"prefer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefer"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCollectionRecord"}}}},"202":{"description":"Queued; follow the Location header to the job."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/features/{collection_id}/data.parquet":{"get":{"tags":["Features"],"summary":"Download Feature Collection","description":"Serve the GeoParquet a published collection is stored as.\n\nThe href its STAC collection advertises as the `data` asset, so a client that reads the\ncatalogue can fetch the bytes it describes. The whole file: windowed reads are the reader's\njob inside a workflow, and a query surface over collections is not this ticket's.\n\nThe path comes from the registered record — see `published_collection_file_or_404`.","operationId":"download_feature_collection_features__collection_id__data_parquet_get","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","title":"Collection Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data-sources":{"get":{"tags":["Data sources"],"summary":"List Data Sources","description":"Return the available data sources from the registry.\n\nJSON by default. A browser gets the page the rail links to: only a client ranking\n`text/html` above JSON, with `?f=html` and `?f=json` deciding outright.\n\nThe page is a narrower view than the JSON: it lists what this instance can *fetch*, while\nthe JSON lists every data source and flags `ingestable`. A data source produced by a\nworkflow is shown under Workflows instead, where the thing that makes it can be seen beside it.\n\nRaster data sources come first, then feature collection data sources, each marked with\n`itemType` (`coverage` or `feature`), as datasets are on `GET /datasets`.","operationId":"list_data_sources_data_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Data Sources Data Sources Get"}},"text/html":{"schema":{"type":"string"}}}}}}},"/data-sources/{dataset_id}":{"get":{"tags":["Data sources"],"summary":"Get Data Source","description":"Get a single data source by ID with derived coverage metadata.\n\nJSON by default. A browser gets the page, where the data source can also be ingested;\n`?f=html` and `?f=json` choose explicitly.","operationId":"get_data_source_data_sources__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":{"type":"object","additionalProperties":true,"title":"Response Get Data Source Data Sources  Dataset Id  Get"}},"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets":{"get":{"tags":["Datasets"],"summary":"List Datasets","description":"List managed datasets.\n\nJSON by default, as it has always been. A browser gets the page the rail links to, on the\nsame terms as a single dataset: only a client ranking `text/html` above JSON, with `?f=html`\nand `?f=json` deciding outright.","operationId":"list_datasets_datasets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetListResponse"}},"text/html":{"schema":{"type":"string"}}}}}}},"/datasets/{dataset_id}":{"get":{"tags":["Datasets"],"summary":"Get Dataset","description":"Get managed dataset metadata and available versions.\n\nJSON by default. A browser, which ranks `text/html` first, gets the dataset page the landing\npage links to; `?f=html` and `?f=json` choose explicitly.","operationId":"get_dataset_datasets__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":{"$ref":"#/components/schemas/DatasetDetailRecord"}},"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/thumbnail.png":{"get":{"tags":["Datasets"],"summary":"Get Dataset Thumbnail","description":"Serve a dataset's thumbnail, the image its STAC collection points at.\n\n404 only when no thumbnail has ever been produced: a dataset not yet ingested, or a first\nrender that failed or found nothing to draw. It is a \"no preview\" answer rather than a\nserver fault. A later run that fails to render, or whose chosen slice is entirely missing,\nleaves the previous image in place, so a 200 here can be a run or more stale — see\n`write_dataset_thumbnail`. The STAC collection only advertises the asset when the file is\nthere, so a client following a published href does not meet the 404.","operationId":"get_dataset_thumbnail_datasets__dataset_id__thumbnail_png_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/datasets/{dataset_id}/download":{"get":{"tags":["Datasets"],"summary":"Download Artifact File","description":"Download the primary saved file for a dataset, for the one format that is a single file.\n\nAn allowlist rather than a denylist. This used to refuse `zarr` and serve everything else\nas `application/x-netcdf` under a `.nc` filename, which was true while NetCDF was the only\nsingle-file format left. `GEOPARQUET` broke that assumption: a feature collection is one\nfile with a path, so it passed the check and came back as Parquet bytes wearing NetCDF's\nmedia type and extension — a wrong answer rather than a refusal.\n\nNaming the format the response is built for means the next format added is refused here by\ndefault and has to claim its own branch, which is the failure a caller can act on. Serving\na feature collection is `GET /features` in CLIM-1068, with the Parquet media type settled\nin CLIM-1069.","operationId":"download_artifact_file_datasets__dataset_id__download_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"}}}}}}},"/ingestions/jobs/{job_id}":{"get":{"tags":["Ingestions"],"summary":"Get Ingestion Job","description":"Return the status of an async ingestion or sync job.","operationId":"get_ingestion_job_ingestions_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":{"$ref":"#/components/schemas/JobRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Ingestions"],"summary":"Cancel Ingestion Job","description":"Request cooperative cancellation for an async ingestion or sync job.","operationId":"cancel_ingestion_job_ingestions_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ingestions":{"post":{"tags":["Ingestions"],"summary":"Create Ingestion","description":"Create or update a managed dataset from a data source and the configured extent.\n\nPass ``Prefer: respond-async`` to queue the ingestion as a background job and\nreturn immediately with 202 + ``Location: /ingestions/jobs/{id}``.","operationId":"create_ingestion_ingestions_post","parameters":[{"name":"prefer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIngestionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Ingestions"],"summary":"List Ingestions","description":"List ingestion run records for operational and admin use.","operationId":"list_ingestions_ingestions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionListResponse"}}}}}}},"/ingestions/{ingestion_id}":{"get":{"tags":["Ingestions"],"summary":"Get Ingestion","description":"Return the managed dataset view created for a given ingestion.","operationId":"get_ingestion_ingestions__ingestion_id__get","parameters":[{"name":"ingestion_id","in":"path","required":true,"schema":{"type":"string","title":"Ingestion Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/zarr/{dataset_id}/{relative_path}":{"get":{"tags":["Zarr"],"summary":"Get Canonical Zarr Store File","description":"Serve canonical Zarr store content for a managed dataset.","operationId":"get_canonical_zarr_store_file_zarr__dataset_id___relative_path__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"relative_path","in":"path","required":true,"schema":{"type":"string","title":"Relative Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["Zarr"],"summary":"Get Canonical Zarr Store File","description":"Serve canonical Zarr store content for a managed dataset.","operationId":"get_canonical_zarr_store_file_zarr__dataset_id___relative_path__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"relative_path","in":"path","required":true,"schema":{"type":"string","title":"Relative Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/icechunk/{dataset_id}/{file_path}":{"get":{"tags":["Icechunk"],"summary":"Serve Icechunk Store File","description":"Serve a raw Icechunk store file for native SDK access.\n\nEnables clients to open the store directly with::\n\n    import icechunk, zarr\n\n    repo = icechunk.Repository.open(icechunk.http_storage(\"http://<host>/icechunk/<dataset_id>/\"))\n    ds = zarr.open(repo.readonly_session(\"main\").store, zarr_format=3)","operationId":"serve_icechunk_store_file_icechunk__dataset_id___file_path__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["Icechunk"],"summary":"Serve Icechunk Store File","description":"Serve a raw Icechunk store file for native SDK access.\n\nEnables clients to open the store directly with::\n\n    import icechunk, zarr\n\n    repo = icechunk.Repository.open(icechunk.http_storage(\"http://<host>/icechunk/<dataset_id>/\"))\n    ds = zarr.open(repo.readonly_session(\"main\").store, zarr_format=3)","operationId":"serve_icechunk_store_file_icechunk__dataset_id___file_path__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sync/{dataset_id}":{"post":{"tags":["Sync"],"summary":"Sync Dataset","description":"Sync a managed dataset forward from its latest available time step.\n\nPass ``Prefer: respond-async`` to queue the sync as a background job and\nreturn immediately with 202 + ``Location: /ingestions/jobs/{id}``.","operationId":"sync_dataset_sync__dataset_id__post","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"prefer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncDatasetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sync/{dataset_id}/plan":{"get":{"tags":["Sync"],"summary":"Plan Sync Dataset","description":"Return the sync plan for a managed dataset without starting a download.","operationId":"plan_sync_dataset_sync__dataset_id__plan_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/schedules":{"get":{"tags":["Schedules"],"summary":"List Schedules","description":"Return configured schedules with process-local runtime status.","operationId":"list_schedules_schedules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleListResponse"}}}}}}},"/processes":{"get":{"tags":["openEO","openEO"],"summary":"List Processes","description":"Return all available openEO processes.\n\nThe openEO JSON by default, as clients expect. A browser gets the catalogue page the rail\nlinks to, on the same terms as a single process.","operationId":"list_processes_processes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Processes Processes Get"}},"text/html":{"schema":{"type":"string"}}}}}}},"/processes/{process_id}":{"get":{"tags":["openEO","openEO"],"summary":"Get Process Spec","description":"Return one openEO process description by id.\n\nJSON by default, as openEO clients expect. A browser, which ranks `text/html` first, gets\nthe process page; `?f=html` and `?f=json` choose explicitly.","operationId":"get_process_spec_processes__process_id__get","parameters":[{"name":"process_id","in":"path","required":true,"schema":{"type":"string","title":"Process Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Process Spec Processes  Process Id  Get"}},"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/exports/{export_id}":{"post":{"tags":["Exports","Exports"],"summary":"Deliver Export","description":"Queue delivery of a completed source job's saved export payload.\n\nReusing an idempotency key with identical content returns the existing\ndelivery; different content is a conflict.","operationId":"deliver_export_exports__export_id__post","parameters":[{"name":"export_id","in":"path","required":true,"schema":{"type":"string","title":"Export Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryAccepted"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/exports/{export_id}/jobs/{delivery_job_id}":{"get":{"tags":["Exports","Exports"],"summary":"Get Delivery Job","description":"Return one delivery job's status and, when finished, its export report.","operationId":"get_delivery_job_exports__export_id__jobs__delivery_job_id__get","parameters":[{"name":"export_id","in":"path","required":true,"schema":{"type":"string","title":"Export Id"}},{"name":"delivery_job_id","in":"path","required":true,"schema":{"type":"string","title":"Delivery Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Delivery Job Exports  Export Id  Jobs  Delivery Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AppInfo":{"properties":{"app_version":{"type":"string","title":"App Version"},"python_version":{"type":"string","title":"Python Version"},"uvicorn_version":{"type":"string","title":"Uvicorn Version"},"read_only":{"type":"boolean","title":"Read Only","default":false}},"type":"object","required":["app_version","python_version","uvicorn_version"],"title":"AppInfo","description":"Application version and environment info."},"ArtifactCoverage":{"properties":{"spatial":{"$ref":"#/components/schemas/CoverageSpatial","description":"Covered spatial extent of the managed dataset."},"spatial_wgs84":{"anyOf":[{"$ref":"#/components/schemas/CoverageSpatial"},{"type":"null"}],"description":"Spatial extent in WGS84. None for WGS84 instances or legacy records."},"temporal":{"$ref":"#/components/schemas/CoverageTemporal","description":"Covered temporal extent of the managed dataset."}},"type":"object","required":["spatial","temporal"],"title":"ArtifactCoverage","description":"Artifact coverage metadata."},"ArtifactFormat":{"type":"string","enum":["zarr","netcdf","icechunk","geoparquet"],"title":"ArtifactFormat","description":"Supported stored artifact formats."},"ArtifactRequestScope":{"properties":{"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start","description":"Requested start period (None for a non-temporal dataset, e.g. a climatology)."},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End","description":"Requested end period for the ingestion or sync operation."},"bbox":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array","maxItems":4,"minItems":4},{"type":"null"}],"title":"Bbox","description":"Requested bounding box when the artifact was created."}},"type":"object","title":"ArtifactRequestScope","description":"Original request parameters used to create an artifact."},"ArtifactVersion":{"properties":{"value":{"type":"string","maxLength":64,"minLength":1,"title":"Value","description":"The release identifier itself, verbatim as the authority publishes it (for example 'R2025A' or '2026-08-19.0'). Opaque to OCS: not parsed, ordered, or normalized, because its syntax belongs to the authority. Surrounding whitespace is rejected rather than trimmed, so 'verbatim' stays true and a padded declaration cannot compare unequal to the same release declared cleanly."},"authority":{"type":"string","maxLength":64,"pattern":"^[a-z0-9]+([._-][a-z0-9]+)*$","title":"Authority","description":"Whose versioning scheme gives `value` its meaning, as a stable machine identifier ('worldpop', 'overture', 'ocs') — never a display label. Compared exactly, and part of the identity, so changing it renames every release under it; choose it once."}},"type":"object","required":["value","authority"],"title":"ArtifactVersion","description":"A logical release identity: what the release is, and whose scheme names it.\n\nThe meaningful identity is the pair. A bare \"1.0\" or \"R2025A\" says nothing on its own —\nit is `worldpop:R2025A` or `ocs:1.0` that identifies a release — so one namespaced\nconcept is carried here rather than parallel `source_version` / `dataset_version` /\n`release_version` fields that would each mean something slightly different.\n\nDistinct from the other two identities on a record. `artifact_id` answers \"which exact\nmaterialization is this?\" and every artifact has one; this answers \"which logical\nrelease is this?\" and only a versioned dataset has one. How an artifact was produced is\nprovenance, and a derived artifact does not inherit a version from its inputs — an\nopenEO result carries `version=None` unless OCS deliberately releases it, with its\ninputs recorded as provenance rather than folded into this field."},"CheckOutcome":{"type":"string","enum":["submitted","not_materialized","already_running","read_only","error"],"title":"CheckOutcome","description":"Outcome of one scheduled dataset check."},"CoverageSpatial":{"properties":{"xmin":{"type":"number","title":"Xmin","description":"Minimum longitude of the covered spatial extent."},"ymin":{"type":"number","title":"Ymin","description":"Minimum latitude of the covered spatial extent."},"xmax":{"type":"number","title":"Xmax","description":"Maximum longitude of the covered spatial extent."},"ymax":{"type":"number","title":"Ymax","description":"Maximum latitude of the covered spatial extent."}},"type":"object","required":["xmin","ymin","xmax","ymax"],"title":"CoverageSpatial","description":"Spatial extent summary."},"CoverageTemporal":{"properties":{"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start","description":"First covered time period in dataset-native string form."},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End","description":"Last covered time period in dataset-native string form."}},"type":"object","title":"CoverageTemporal","description":"Temporal extent summary.\n\n``start``/``end`` are ``None`` for a non-temporal (ordinal) dataset such as a\nday-of-year climatology, which has no datetime extent."},"CreateIngestionRequest":{"properties":{"dataset_id":{"type":"string","title":"Dataset Id","description":"Id of the data source to ingest from, as listed at GET /data-sources."},"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start","description":"Start period to ingest. Required for historical datasets. May be omitted for a dataset declaring 'temporal_direction: future' (e.g. a forecast), where it means 'from now' — a fixed date would be stale by the next day."},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End","description":"Optional end period to ingest."},"overwrite":{"type":"boolean","title":"Overwrite","description":"Whether to force regeneration of an existing matching artifact.","default":false},"publish":{"type":"boolean","title":"Publish","description":"Whether to publish the resulting dataset.","default":true}},"type":"object","required":["dataset_id"],"title":"CreateIngestionRequest","description":"Request payload for creating or updating a managed dataset."},"DatasetAccessLink":{"properties":{"href":{"type":"string","title":"Href","description":"Relative API path for this dataset access mode."},"rel":{"type":"string","title":"Rel","description":"Relationship type of the link."},"title":{"type":"string","title":"Title","description":"Human-readable label for the link target."}},"type":"object","required":["href","rel","title"],"title":"DatasetAccessLink","description":"Access link for a managed dataset."},"DatasetDetailRecord":{"properties":{"dataset_id":{"type":"string","title":"Dataset Id","description":"Stable public identifier for the managed dataset."},"source_dataset_id":{"type":"string","title":"Source Dataset Id","description":"Id of the data source this managed dataset was created from."},"dataset_name":{"type":"string","title":"Dataset Name","description":"Full display name of the dataset."},"short_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Name","description":"Short display name of the dataset."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Longer prose description from the dataset template, where the caveats about what the values mean belong."},"itemType":{"$ref":"#/components/schemas/DatasetItemType","description":"What this dataset holds: 'feature' for a feature collection, 'coverage' for a raster. The one field that lets a client filter a listing without a request per row — `format` sits on the nested version record, which only the detail endpoint returns. Spelled in OGC API - Features' camelCase because the name is borrowed from that specification rather than invented here."},"variable":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variable","description":"Primary raster variable stored in the dataset. None for a feature collection, which has properties rather than a measured variable."},"period_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Type","description":"Temporal period type of the dataset, for example daily or yearly. None for a dataset with no temporal axis, such as a boundary set."},"units":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Units","description":"Units of the primary variable."},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Native spatial resolution summary."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Upstream source name."},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Upstream source documentation URL."},"license":{"type":"string","title":"License","description":"SPDX identifier for the dataset's licence, or 'other' when the licence has no SPDX identifier. Never absent: an undeclared licence reports 'other' rather than something that reads as permissive.","default":"other"},"license_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License Url","description":"URL of the licence text, when known."},"extent":{"$ref":"#/components/schemas/ArtifactCoverage","description":"Current covered spatial and temporal extent of the dataset."},"last_updated":{"type":"string","format":"date-time","title":"Last Updated","description":"Timestamp when Open Climate Service last materialized or updated the dataset."},"links":{"items":{"$ref":"#/components/schemas/DatasetAccessLink"},"type":"array","title":"Links","description":"Available API access links for this managed dataset."},"publication":{"$ref":"#/components/schemas/DatasetPublication","description":"Publication summary for this managed dataset."},"versions":{"items":{"$ref":"#/components/schemas/DatasetVersionRecord"},"type":"array","title":"Versions","description":"Slim version history derived from internal artifact records."}},"type":"object","required":["dataset_id","source_dataset_id","dataset_name","itemType","extent","last_updated","publication","versions"],"title":"DatasetDetailRecord","description":"Detailed native FastAPI view of a managed dataset."},"DatasetItemType":{"type":"string","enum":["feature","coverage"],"title":"DatasetItemType","description":"What a managed dataset holds, as the public `itemType` discriminator.\n\nThe field name and the `feature` value are OGC API - Features Part 1, which defines\n`itemType` on the collection object as an \"indicator about the type of the items in the\ncollection (the default value is 'feature')\". `coverage` is convention rather than\nconformance: OGC API - Coverages is a candidate draft and silent on the field. `/datasets`\nis OCS's own API, so borrowing the name buys consistency, not a promise that the rest of\nan OGC collection object is there."},"DatasetListResponse":{"properties":{"kind":{"type":"string","title":"Kind","description":"Self-describing envelope type for this collection response.","default":"DatasetList","examples":["DatasetList"]},"items":{"items":{"$ref":"#/components/schemas/DatasetRecord"},"type":"array","title":"Items","description":"Managed datasets available in this Open Climate Service instance.","examples":[[{"dataset_id":"chirps3_precipitation_daily_sle","dataset_name":"Total precipitation (CHIRPS3)","extent":{"spatial":{"xmax":-10.1,"xmin":-13.5,"ymax":10.0,"ymin":6.9},"temporal":{"end":"2024-01-31","start":"2024-01-01"}},"itemType":"coverage","last_updated":"2026-03-27T08:40:24.344473Z","links":[{"href":"/datasets/chirps3_precipitation_daily_sle","rel":"self","title":"Dataset detail"},{"href":"/zarr/chirps3_precipitation_daily_sle","rel":"zarr","title":"Zarr store"}],"period_type":"daily","publication":{"published_at":"2026-03-27T08:40:24.346357Z","status":"published"},"resolution":"5 km x 5 km","short_name":"Total precipitation","source":"CHIRPS v3","source_dataset_id":"chirps3_precipitation_daily","source_url":"https://www.chc.ucsb.edu/data/chirps3","units":"mm","variable":"precip"}]]}},"type":"object","title":"DatasetListResponse","description":"Envelope response for managed datasets."},"DatasetPublication":{"properties":{"status":{"$ref":"#/components/schemas/PublicationStatus","description":"Publication state of the dataset in the OGC-facing layer."},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At","description":"Timestamp when the dataset was last published."}},"type":"object","required":["status"],"title":"DatasetPublication","description":"Public publication summary for a managed dataset."},"DatasetRecord":{"properties":{"dataset_id":{"type":"string","title":"Dataset Id","description":"Stable public identifier for the managed dataset."},"source_dataset_id":{"type":"string","title":"Source Dataset Id","description":"Id of the data source this managed dataset was created from."},"dataset_name":{"type":"string","title":"Dataset Name","description":"Full display name of the dataset."},"short_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Name","description":"Short display name of the dataset."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Longer prose description from the dataset template, where the caveats about what the values mean belong."},"itemType":{"$ref":"#/components/schemas/DatasetItemType","description":"What this dataset holds: 'feature' for a feature collection, 'coverage' for a raster. The one field that lets a client filter a listing without a request per row — `format` sits on the nested version record, which only the detail endpoint returns. Spelled in OGC API - Features' camelCase because the name is borrowed from that specification rather than invented here."},"variable":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variable","description":"Primary raster variable stored in the dataset. None for a feature collection, which has properties rather than a measured variable."},"period_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Type","description":"Temporal period type of the dataset, for example daily or yearly. None for a dataset with no temporal axis, such as a boundary set."},"units":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Units","description":"Units of the primary variable."},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Native spatial resolution summary."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Upstream source name."},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Upstream source documentation URL."},"license":{"type":"string","title":"License","description":"SPDX identifier for the dataset's licence, or 'other' when the licence has no SPDX identifier. Never absent: an undeclared licence reports 'other' rather than something that reads as permissive.","default":"other"},"license_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License Url","description":"URL of the licence text, when known."},"extent":{"$ref":"#/components/schemas/ArtifactCoverage","description":"Current covered spatial and temporal extent of the dataset."},"last_updated":{"type":"string","format":"date-time","title":"Last Updated","description":"Timestamp when Open Climate Service last materialized or updated the dataset."},"links":{"items":{"$ref":"#/components/schemas/DatasetAccessLink"},"type":"array","title":"Links","description":"Available API access links for this managed dataset."},"publication":{"$ref":"#/components/schemas/DatasetPublication","description":"Publication summary for this managed dataset."}},"type":"object","required":["dataset_id","source_dataset_id","dataset_name","itemType","extent","last_updated","publication"],"title":"DatasetRecord","description":"Native FastAPI view of a managed dataset."},"DatasetVersionRecord":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when this dataset version was created."},"format":{"$ref":"#/components/schemas/ArtifactFormat","description":"Stored format of this dataset version."},"coverage":{"$ref":"#/components/schemas/ArtifactCoverage","description":"Covered spatial and temporal extent for this dataset version."},"request_scope":{"anyOf":[{"$ref":"#/components/schemas/ArtifactRequestScope"},{"type":"null"}],"description":"Original request scope that produced this version, when available."}},"type":"object","required":["created_at","format","coverage"],"title":"DatasetVersionRecord","description":"Version summary as exposed from a dataset detail view."},"DeliveryAccepted":{"properties":{"delivery_job_id":{"type":"string","title":"Delivery Job Id"},"export_id":{"type":"string","title":"Export Id"},"dry_run":{"type":"boolean","title":"Dry Run"},"reused":{"type":"boolean","title":"Reused"},"status_url":{"type":"string","title":"Status Url"},"report_url":{"type":"string","title":"Report Url"}},"type":"object","required":["delivery_job_id","export_id","dry_run","reused","status_url","report_url"],"title":"DeliveryAccepted","description":"Accepted delivery job plus links to its status and report."},"DeliveryRequest":{"properties":{"job_id":{"type":"string","title":"Job Id"},"dry_run":{"type":"boolean","title":"Dry Run","default":false}},"additionalProperties":false,"type":"object","required":["job_id"],"title":"DeliveryRequest","description":"Request body for POST /exports/{export_id}."},"ExtentRecord":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Human-readable name of the extent."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional descriptive text for the extent."},"bbox":{"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array","maxItems":4,"minItems":4,"title":"Bbox","description":"Configured bounding box for the extent as xmin, ymin, xmax, ymax."}},"type":"object","required":["bbox"],"title":"ExtentRecord","description":"Configured spatial extent for this Open Climate Service instance."},"FeatureCollectionListResponse":{"properties":{"kind":{"type":"string","title":"Kind","description":"Self-describing envelope type for this collection response.","default":"FeatureCollectionList","examples":["FeatureCollectionList"]},"items":{"items":{"$ref":"#/components/schemas/FeatureCollectionRecord"},"type":"array","title":"Items","description":"Feature collections registered in this Open Climate Service instance. A GeoParquet file in the store directory that nothing registered is not one of these: the listing reads records, never the filesystem."}},"type":"object","title":"FeatureCollectionListResponse","description":"Envelope response for registered feature collections."},"FeatureCollectionRecord":{"properties":{"id":{"type":"string","title":"Id","description":"Stable identifier of the collection, and the name it is loaded by."},"name":{"type":"string","title":"Name","description":"Display name of the collection."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Prose from the collection's template, where caveats about what the features mean belong."},"license":{"type":"string","title":"License","description":"SPDX identifier for the collection's licence, or 'other' when it has none. Never absent: an undeclared licence reports 'other' rather than something that reads as permissive.","default":"other"},"license_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License Url","description":"URL of the licence text, when known."},"attribution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attribution","description":"Required attribution for the collection. Not decoration: Overture divisions carry an obligation from the OpenStreetMap data they incorporate."},"id_property":{"type":"string","title":"Id Property","description":"Property each feature is identified by. The value that becomes the location column of a DHIS2 or CHAP export, which is why it can never be absent."},"feature_count":{"type":"integer","title":"Feature Count","description":"Number of features stored in the collection."},"geometry_types":{"items":{"type":"string"},"type":"array","title":"Geometry Types","description":"Geometry types the stored file declares, for example ['Polygon']. Empty when the file declares none, which is 'not stated' rather than 'no geometry'."},"primary_geometry":{"type":"string","title":"Primary Geometry","description":"Name of the geometry column in the stored file."},"crs":{"type":"string","title":"Crs","description":"Coordinate reference system the geometry is stored in."},"version":{"anyOf":[{"$ref":"#/components/schemas/ArtifactVersion"},{"type":"null"}],"description":"Release identity of the stored collection, when its source publishes one."},"extent":{"$ref":"#/components/schemas/ArtifactCoverage","description":"Spatial extent of the stored collection."},"last_updated":{"type":"string","format":"date-time","title":"Last Updated","description":"When this collection was last written."}},"type":"object","required":["id","name","id_property","feature_count","primary_geometry","crs","extent","last_updated"],"title":"FeatureCollectionRecord","description":"One registered feature collection, as `GET /features` reports it.\n\nTwo kinds of fact meet here. Record-derived ones — count, geometry types, CRS, coverage,\nversion — describe what was actually stored, and are answerable for every collection.\nTemplate-derived ones — licence, attribution, description — describe what the collection\n*is*, and are only as good as the template that declared it."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthStatus":{"properties":{"status":{"$ref":"#/components/schemas/Status"}},"type":"object","required":["status"],"title":"HealthStatus","description":"Health check response."},"IngestionListResponse":{"properties":{"kind":{"type":"string","title":"Kind","description":"Self-describing envelope type for this collection response.","default":"IngestionList","examples":["IngestionList"]},"items":{"items":{"$ref":"#/components/schemas/IngestionResponse"},"type":"array","title":"Items","description":"Ingestion run records available in this Open Climate Service instance."}},"type":"object","title":"IngestionListResponse","description":"Envelope response for ingestion run records."},"IngestionResponse":{"properties":{"ingestion_id":{"type":"string","title":"Ingestion Id","description":"Identifier of the ingestion event."},"status":{"type":"string","title":"Status","description":"Execution status of the ingestion request."},"dataset":{"anyOf":[{"$ref":"#/components/schemas/DatasetRecord"},{"type":"null"}],"description":"Managed dataset summary. None for async requests."}},"type":"object","required":["ingestion_id","status"],"title":"IngestionResponse","description":"Response returned after creating or looking up a managed dataset via ingestion."},"JobError":{"properties":{"type":{"type":"string","title":"Type"},"message":{"type":"string","title":"Message"}},"type":"object","required":["type","message"],"title":"JobError","description":"Serialized error details for a failed job."},"JobEvent":{"properties":{"type":{"type":"string","title":"Type"},"source":{"type":"string","title":"Source"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"eventID":{"type":"string","title":"Eventid"},"time":{"type":"string","format":"date-time","title":"Time"}},"type":"object","required":["type","source","eventID","time"],"title":"JobEvent","description":"Domain event persisted atomically with a successful native job."},"JobLink":{"properties":{"href":{"type":"string","title":"Href"},"rel":{"type":"string","title":"Rel"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["href","rel"],"title":"JobLink","description":"Hypermedia link for a job resource."},"JobProgress":{"properties":{"done":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Done"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percent"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","title":"JobProgress","description":"Progress details reported by a running job."},"JobRecord":{"properties":{"jobID":{"type":"string","title":"Jobid"},"processID":{"type":"string","title":"Processid"},"type":{"$ref":"#/components/schemas/JobType","default":"process"},"status":{"$ref":"#/components/schemas/JobStatus"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"finishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finishedat"},"attempt":{"type":"integer","title":"Attempt","default":0},"maxAttempts":{"type":"integer","title":"Maxattempts","default":1},"executorKind":{"type":"string","title":"Executorkind","default":"thread"},"request":{"additionalProperties":true,"type":"object","title":"Request"},"progress":{"$ref":"#/components/schemas/JobProgress"},"result":{"anyOf":[{},{"type":"null"}],"title":"Result"},"events":{"items":{"$ref":"#/components/schemas/JobEvent"},"type":"array","title":"Events"},"error":{"anyOf":[{"$ref":"#/components/schemas/JobError"},{"type":"null"}]},"cancelRequested":{"type":"boolean","title":"Cancelrequested","default":false},"retryAfter":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retryafter"},"cursor":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cursor"},"links":{"items":{"$ref":"#/components/schemas/JobLink"},"type":"array","title":"Links"}},"type":"object","required":["jobID","processID","status","createdAt"],"title":"JobRecord","description":"Persisted native job record."},"JobStatus":{"type":"string","enum":["accepted","running","retrying","successful","failed","cancelled"],"title":"JobStatus","description":"Persisted lifecycle states for native jobs."},"JobType":{"type":"string","enum":["process"],"title":"JobType","description":"Native job categories."},"OpenEOJobCreate":{"properties":{"process":{"additionalProperties":true,"type":"object","title":"Process"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget"}},"type":"object","required":["process"],"title":"OpenEOJobCreate","description":"Request body for POST /jobs."},"OpenEOJobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/OpenEOJobRecord"},"type":"array","title":"Jobs"},"links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Links"}},"type":"object","required":["jobs"],"title":"OpenEOJobListResponse","description":"Envelope for GET /jobs."},"OpenEOJobRecord":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"process":{"additionalProperties":true,"type":"object","title":"Process"},"status":{"$ref":"#/components/schemas/OpenEOJobStatus"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget"},"usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Usage"},"logs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logs"},"links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Links"}},"type":"object","required":["id","status","created"],"title":"OpenEOJobRecord","description":"Persisted openEO job record."},"OpenEOJobResults":{"properties":{"type":{"type":"string","title":"Type","default":"Feature"},"stac_version":{"type":"string","title":"Stac Version"},"stac_extensions":{"items":{"type":"string"},"type":"array","title":"Stac Extensions"},"id":{"type":"string","title":"Id"},"geometry":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geometry"},"properties":{"additionalProperties":true,"type":"object","title":"Properties"},"assets":{"additionalProperties":true,"type":"object","title":"Assets"},"links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Links"}},"type":"object","required":["stac_version","id"],"title":"OpenEOJobResults","description":"Response for GET /jobs/{id}/results."},"OpenEOJobStatus":{"type":"string","enum":["created","queued","running","finished","error","canceled"],"title":"OpenEOJobStatus","description":"openEO-compliant job lifecycle states."},"OpenEOJobUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"process":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Process"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget"}},"type":"object","title":"OpenEOJobUpdate","description":"Request body for PATCH /jobs/{job_id}."},"PublicationStatus":{"type":"string","enum":["unpublished","published"],"title":"PublicationStatus","description":"Publication lifecycle states."},"ScheduleListResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"running":{"type":"boolean","title":"Running"},"timezone":{"type":"string","title":"Timezone"},"schedules":{"items":{"$ref":"#/components/schemas/ScheduleStatus"},"type":"array","title":"Schedules"}},"type":"object","required":["enabled","running","timezone"],"title":"ScheduleListResponse","description":"Status of the process-local scheduler and configured schedules."},"ScheduleStatus":{"properties":{"schedule_id":{"type":"string","title":"Schedule Id"},"dataset_id":{"type":"string","title":"Dataset Id"},"cron":{"type":"string","title":"Cron"},"timezone":{"type":"string","title":"Timezone"},"publish":{"type":"boolean","title":"Publish"},"max_attempts":{"type":"integer","title":"Max Attempts"},"next_check":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Check"},"last_check":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Check"},"last_outcome":{"anyOf":[{"$ref":"#/components/schemas/CheckOutcome"},{"type":"null"}]},"last_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message"},"last_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Job Id"}},"type":"object","required":["schedule_id","dataset_id","cron","timezone","publish","max_attempts"],"title":"ScheduleStatus","description":"Configuration and volatile runtime status for one dataset schedule."},"StacCatalogResponse":{"properties":{"stac_version":{"type":"string","title":"Stac Version"},"type":{"type":"string","const":"Catalog","title":"Type"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"links":{"items":{"$ref":"#/components/schemas/StacLink"},"type":"array","title":"Links"}},"additionalProperties":true,"type":"object","required":["stac_version","type","id","title","description","links"],"title":"StacCatalogResponse","description":"Catalog response with flexible extension fields."},"StacLink":{"properties":{"rel":{"type":"string","title":"Rel"},"href":{"type":"string","title":"Href"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["rel","href"],"title":"StacLink","description":"Minimal STAC link representation."},"Status":{"type":"string","enum":["healthy","degraded","unhealthy"],"title":"Status","description":"Health check status values."},"SyncAction":{"type":"string","enum":["rematerialize","append","no_op","not_syncable"],"title":"SyncAction","description":"Planner-selected sync action.\n\nAPPEND means Open Climate Service updates an existing managed dataset by writing only\nthe missing periods needed to reach the planned target end by extending the\ncommitted artifact store."},"SyncDatasetRequest":{"properties":{"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End","description":"Optional end period to sync through."},"publish":{"type":"boolean","title":"Publish","description":"Whether to publish the resulting dataset version.","default":true}},"type":"object","title":"SyncDatasetRequest","description":"Request payload for syncing a managed dataset forward."},"SyncDetail":{"properties":{"source_dataset_id":{"type":"string","title":"Source Dataset Id","description":"Id of the data source used to plan the sync."},"sync_kind":{"$ref":"#/components/schemas/SyncKind","description":"Sync planning mode the data source declares."},"action":{"$ref":"#/components/schemas/SyncAction","description":"Planner-selected sync action."},"reason":{"type":"string","title":"Reason","description":"Stable machine-readable reason for the selected action."},"message":{"type":"string","title":"Message","description":"Human-readable summary of the planned sync outcome."},"current_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Start","description":"First period currently covered by the managed dataset before sync."},"current_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current End","description":"Last period currently covered by the managed dataset before sync."},"target_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target End","description":"Resolved target period after applying request defaults and availability constraints."},"target_end_source":{"type":"string","title":"Target End Source","description":"Where target_end came from, for example request, default_today, request_clamped_by_availability, default_today_clamped_by_availability, or current_coverage."},"current_version":{"anyOf":[{"$ref":"#/components/schemas/ArtifactVersion"},{"type":"null"}],"description":"Release identity of the currently materialized artifact, read from ArtifactRecord.version. Populated only for sync_kind=release when the artifact carries one; current_end remains the period-domain value used for availability queries even when this is set."},"target_version":{"anyOf":[{"$ref":"#/components/schemas/ArtifactVersion"},{"type":"null"}],"description":"Release identity the template declares as current, for sync_kind=release."},"delta_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delta Start","description":"First missing period planned for append execution, when applicable."},"delta_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delta End","description":"Last missing period planned for append execution, when applicable."}},"type":"object","required":["source_dataset_id","sync_kind","action","reason","message","target_end_source"],"title":"SyncDetail","description":"Structured planner output for one managed dataset sync decision.\n\nThis record exists so callers can see both the operational outcome and the\nreasoning that led to it without needing to infer that logic from status\nstrings alone."},"SyncKind":{"type":"string","enum":["temporal","release","static"],"title":"SyncKind","description":"Supported sync planning modes declared by dataset templates."},"SyncResponse":{"properties":{"sync_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Id","description":"Identifier of the sync-created version when a new version was written."},"status":{"type":"string","title":"Status","description":"Execution status, for example completed or up_to_date."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable explanation of the sync outcome."},"dataset":{"anyOf":[{"$ref":"#/components/schemas/DatasetDetailRecord"},{"type":"null"}],"description":"Current dataset detail. None for async requests."},"sync_detail":{"anyOf":[{"$ref":"#/components/schemas/SyncDetail"},{"type":"null"}],"description":"Planner output describing how Open Climate Service interpreted the sync request."}},"type":"object","required":["status"],"title":"SyncResponse","description":"Public response returned after planning and optionally running a sync."},"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"},"WorkflowListResponse":{"properties":{"processes":{"items":{"$ref":"#/components/schemas/WorkflowRecord"},"type":"array","title":"Processes"},"links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Links"}},"type":"object","required":["processes"],"title":"WorkflowListResponse","description":"Envelope for GET /process_graphs."},"WorkflowRecord":{"properties":{"id":{"type":"string","title":"Id"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parameters":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Parameters"},"returns":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Returns"},"process_graph":{"additionalProperties":true,"type":"object","title":"Process Graph"},"links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Links"}},"type":"object","required":["id"],"title":"WorkflowRecord","description":"Persisted workflow (user-defined process)."}}},"servers":[{"url":"/ocs"}]}