{"openapi": "3.1.0", "info": {"title": "AID4T Engine API", "description": "One-stop, AI-agent-ready access to multi-source tornado data. Browse freely; sign in (free account) to download data or request processed results.", "version": "0.1.0"}, "paths": {"/api/auth/register": {"post": {"summary": "Register", "description": "Create a free user account (curator roles are granted only by administrators).", "operationId": "register_api_auth_register_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RegisterBody"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/auth/login": {"post": {"summary": "Login", "operationId": "login_api_auth_login_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginBody"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/auth/logout": {"post": {"summary": "Logout", "operationId": "logout_api_auth_logout_post", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/api/auth/me": {"get": {"summary": "Me", "operationId": "me_api_auth_me_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/auth/api-key": {"post": {"summary": "New Api Key", "operationId": "new_api_key_api_auth_api_key_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/health": {"get": {"summary": "Health", "operationId": "health_api_health_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/api/modalities": {"get": {"summary": "Modalities", "operationId": "modalities_api_modalities_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/api/workflows": {"get": {"summary": "Workflows", "operationId": "workflows_api_workflows_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/api/processors": {"get": {"summary": "Processors", "operationId": "processors_api_processors_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/api/query": {"post": {"summary": "Query", "description": "Unified query: any combination of event / location / modality / time facets.", "operationId": "query_api_query_post", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuerySpec"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/events": {"get": {"summary": "Events", "description": "GET form of /api/query (convenient for curl, notebooks and agents).", "operationId": "events_api_events_get", "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "text match on name/tag", "title": "Q"}, "description": "text match on name/tag"}, {"name": "event_id", "in": "query", "required": false, "schema": {"type": "array", "items": {"type": "string"}, "default": [], "title": "Event Id"}}, {"name": "state", "in": "query", "required": false, "schema": {"type": "array", "items": {"type": "string"}, "default": [], "title": "State"}}, {"name": "bbox", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "min_lon,min_lat,max_lon,max_lat", "title": "Bbox"}, "description": "min_lon,min_lat,max_lon,max_lat"}, {"name": "lat", "in": "query", "required": false, "schema": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lat"}}, {"name": "lon", "in": "query", "required": false, "schema": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lon"}}, {"name": "radius_km", "in": "query", "required": false, "schema": {"type": "number", "default": 50, "title": "Radius Km"}}, {"name": "place", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Place"}}, {"name": "start", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Start"}}, {"name": "end", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "End"}}, {"name": "ef_min", "in": "query", "required": false, "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ef Min"}}, {"name": "ef_max", "in": "query", "required": false, "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ef Max"}}, {"name": "modality", "in": "query", "required": false, "schema": {"type": "array", "items": {"type": "string"}, "default": [], "title": "Modality"}}, {"name": "require", "in": "query", "required": false, "schema": {"enum": ["none", "any", "all"], "type": "string", "default": "none", "title": "Require"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "default": 200, "title": "Limit"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/events/{tdn_id}": {"get": {"summary": "Event", "operationId": "event_api_events__tdn_id__get", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/events/{tdn_id}/inventory": {"get": {"summary": "Inventory", "description": "Data AID4T Engine can deliver for the event. `include_unavailable=true` also lists what cannot be delivered and why.", "operationId": "inventory_api_events__tdn_id__inventory_get", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}, {"name": "modalities", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Modalities"}}, {"name": "verify", "in": "query", "required": false, "schema": {"type": "boolean", "default": true, "title": "Verify"}}, {"name": "include_unavailable", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Include Unavailable"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/downloads": {"post": {"summary": "Create Download", "description": "AID4T Engine fetches the selected data from all sources, stages them on the AID4T Engine server and packages one zip.", "operationId": "create_download_api_downloads_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DownloadSpec"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"summary": "List Downloads", "operationId": "list_downloads_api_downloads_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/downloads/{rid}": {"get": {"summary": "Get Download", "operationId": "get_download_api_downloads__rid__get", "parameters": [{"name": "rid", "in": "path", "required": true, "schema": {"type": "string", "title": "Rid"}}, {"name": "wait", "in": "query", "required": false, "schema": {"type": "number", "default": 0, "title": "Wait"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/downloads/{rid}/file": {"get": {"summary": "Download File", "operationId": "download_file_api_downloads__rid__file_get", "parameters": [{"name": "rid", "in": "path", "required": true, "schema": {"type": "string", "title": "Rid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/jobs": {"post": {"summary": "Submit Job", "operationId": "submit_job_api_jobs_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobSpec"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"summary": "List Jobs", "operationId": "list_jobs_api_jobs_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/jobs/{jid}": {"get": {"summary": "Get Job", "operationId": "get_job_api_jobs__jid__get", "parameters": [{"name": "jid", "in": "path", "required": true, "schema": {"type": "string", "title": "Jid"}}, {"name": "wait", "in": "query", "required": false, "schema": {"type": "number", "default": 0, "title": "Wait"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/jobs/{jid}/provenance": {"get": {"summary": "Job Provenance", "description": "Computational provenance: code name/version/authors/validator + code digests, environment, inputs,\nrequest parameters and output digests.", "operationId": "job_provenance_api_jobs__jid__provenance_get", "parameters": [{"name": "jid", "in": "path", "required": true, "schema": {"type": "string", "title": "Jid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/jobs/{jid}/reproduce": {"post": {"summary": "Reproduce Job", "description": "Re-run the identical request; the new job's `reproduction` block compares results, code and inputs.", "operationId": "reproduce_job_api_jobs__jid__reproduce_post", "parameters": [{"name": "jid", "in": "path", "required": true, "schema": {"type": "string", "title": "Jid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/jobs/{jid}/files/{path}": {"get": {"summary": "Job File", "operationId": "job_file_api_jobs__jid__files__path__get", "parameters": [{"name": "jid", "in": "path", "required": true, "schema": {"type": "string", "title": "Jid"}}, {"name": "path", "in": "path", "required": true, "schema": {"type": "string", "title": "Path"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/ask": {"post": {"summary": "Ask", "description": "Natural-language request → structured query → retrieved data → answer. Searching is open; downloads and\nprocessed results need a signed-in user. Every exchange gets an auditable record (`ask_id`).", "operationId": "ask_api_ask_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AskBody"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/asks/{ask_id}": {"get": {"summary": "Get Ask", "description": "Record of an Ask T exchange: structured query, data sources, code and catalog versions, linked results.", "operationId": "get_ask_api_asks__ask_id__get", "parameters": [{"name": "ask_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Ask Id"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/conversations/{cid}": {"get": {"summary": "Get Conversation", "description": "Turns of an Ask T conversation (question, structured query, answer, results).", "operationId": "get_conversation_api_conversations__cid__get", "parameters": [{"name": "cid", "in": "path", "required": true, "schema": {"type": "string", "title": "Cid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/mcp": {"post": {"summary": "Mcp", "description": "MCP over HTTP (stateless JSON-RPC). Send your API key as X-API-Key to use download/job tools.", "operationId": "mcp_mcp_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/llms.txt": {"get": {"summary": "Llms Txt", "operationId": "llms_txt_llms_txt_get", "responses": {"200": {"description": "Successful Response", "content": {"text/plain": {"schema": {"type": "string"}}}}}}}, "/api/contributions": {"post": {"summary": "Contribute", "description": "Submit a dataset (link, or then upload the file with PUT .../file). It stays pending and invisible to other\nusers until an administrator or the data-category lead approves it.", "operationId": "contribute_api_contributions_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ContributionIn"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/contributions/{cid}/file": {"put": {"summary": "Contribute File", "description": "Upload the file of a contribution (raw request body; e.g. curl -T data.nc '.../file?filename=data.nc').", "operationId": "contribute_file_api_contributions__cid__file_put", "parameters": [{"name": "cid", "in": "path", "required": true, "schema": {"type": "integer", "title": "Cid"}}, {"name": "filename", "in": "query", "required": true, "schema": {"type": "string", "title": "Filename"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/contributions/mine": {"get": {"summary": "My Contributions", "operationId": "my_contributions_api_contributions_mine_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/contributions/{cid}": {"get": {"summary": "Get Contribution", "operationId": "get_contribution_api_contributions__cid__get", "parameters": [{"name": "cid", "in": "path", "required": true, "schema": {"type": "integer", "title": "Cid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/contributions": {"get": {"summary": "Admin Contributions", "description": "Contributions this curator may review (leads see only their data types).", "operationId": "admin_contributions_api_admin_contributions_get", "parameters": [{"name": "status", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "pending", "title": "Status"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/contributions/{cid}/file": {"get": {"summary": "Admin Contribution File", "operationId": "admin_contribution_file_api_admin_contributions__cid__file_get", "parameters": [{"name": "cid", "in": "path", "required": true, "schema": {"type": "integer", "title": "Cid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/contributions/{cid}/review": {"post": {"summary": "Review Contribution", "description": "Approve (publish to AID4T permanent storage / catalog) or reject a pending contribution.", "operationId": "review_contribution_api_admin_contributions__cid__review_post", "parameters": [{"name": "cid", "in": "path", "required": true, "schema": {"type": "integer", "title": "Cid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReviewBody"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/storage/{tdn_id}/{modality}/{filename}": {"put": {"summary": "Upload Storage", "description": "Publish a team dataset directly to AID4T permanent storage (curators only, within their data types).", "operationId": "upload_storage_api_admin_storage__tdn_id___modality___filename__put", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}, {"name": "modality", "in": "path", "required": true, "schema": {"type": "string", "title": "Modality"}}, {"name": "filename", "in": "path", "required": true, "schema": {"type": "string", "title": "Filename"}}, {"name": "title", "in": "query", "required": false, "schema": {"type": "string", "default": "Uploaded dataset", "title": "Title"}}, {"name": "provider", "in": "query", "required": false, "schema": {"type": "string", "default": "AID4T team", "title": "Provider"}}, {"name": "license", "in": "query", "required": false, "schema": {"type": "string", "default": "", "title": "License"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/backlog": {"get": {"summary": "Ingest Backlog", "description": "Registered datasets that are not yet downloadable (must be obtained and ingested by the team).", "operationId": "ingest_backlog_api_admin_backlog_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/users": {"get": {"summary": "Admin Users", "operationId": "admin_users_api_admin_users_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/users/{uid}/role": {"post": {"summary": "Admin Set Role", "operationId": "admin_set_role_api_admin_users__uid__role_post", "parameters": [{"name": "uid", "in": "path", "required": true, "schema": {"type": "integer", "title": "Uid"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleBody"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/metrics": {"get": {"summary": "Admin Metrics", "description": "Usage metrics: users by sector, active users, downloads/jobs/asks/contributions by month, data volume,\nmost-requested data types.", "operationId": "admin_metrics_api_admin_metrics_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/events/{tdn_id}/features": {"get": {"summary": "Event Features", "description": "Event-level metadata and labels: lifecycle, labels and summary are open; the per-scan feature table\n(`scans=true`) needs a free account.", "operationId": "event_features_api_events__tdn_id__features_get", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}, {"name": "scans", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Scans"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/events/{tdn_id}/features.csv": {"get": {"summary": "Event Features Csv", "operationId": "event_features_csv_api_events__tdn_id__features_csv_get", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"text/plain": {"schema": {"type": "string"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/features/search": {"get": {"summary": "Feature Search", "description": "Search radar scans across all events by feature values and labels (latest feature version per event).", "operationId": "feature_search_api_features_search_get", "parameters": [{"name": "min_delta_v_kts", "in": "query", "required": false, "schema": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Min Delta V Kts"}}, {"name": "max_delta_v_kts", "in": "query", "required": false, "schema": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Max Delta V Kts"}}, {"name": "label", "in": "query", "required": false, "schema": {"anyOf": [{"enum": ["tornadic", "non-tornadic", "no data"], "type": "string"}, {"type": "null"}], "title": "Label"}}, {"name": "stage", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage"}}, {"name": "max_core_radius_m", "in": "query", "required": false, "schema": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Max Core Radius M"}}, {"name": "event_ids", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Event Ids"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "maximum": 20000, "default": 1000, "title": "Limit"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/features/{tdn_id}": {"post": {"summary": "Build Features", "description": "Compute a new version of an event's metadata and labels (curators).", "operationId": "build_features_api_admin_features__tdn_id__post", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}, {"name": "demo", "in": "query", "required": false, "schema": {"type": "boolean", "default": false, "title": "Demo"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/datasets": {"post": {"summary": "Create Dataset", "description": "Generate an AI-ready federated dataset for a research objective: a versioned manifest that links raw data\nat their sources, event metadata/labels and Zarr products for the selected events (nothing is copied).", "operationId": "create_dataset_api_datasets_post", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DatasetSpec"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "get": {"summary": "List Datasets", "operationId": "list_datasets_api_datasets_get", "parameters": [{"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/datasets/{did}": {"get": {"summary": "Get Dataset", "operationId": "get_dataset_api_datasets__did__get", "parameters": [{"name": "did", "in": "path", "required": true, "schema": {"type": "string", "title": "Did"}}, {"name": "version", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/datasets/{did}/manifest.json": {"get": {"summary": "Dataset Manifest", "operationId": "dataset_manifest_api_datasets__did__manifest_json_get", "parameters": [{"name": "did", "in": "path", "required": true, "schema": {"type": "string", "title": "Did"}}, {"name": "version", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/datasets/{did}/files/{name}": {"get": {"summary": "Dataset File", "operationId": "dataset_file_api_datasets__did__files__name__get", "parameters": [{"name": "did", "in": "path", "required": true, "schema": {"type": "string", "title": "Did"}}, {"name": "name", "in": "path", "required": true, "schema": {"type": "string", "title": "Name"}}, {"name": "version", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/datasets/{did}/refresh": {"post": {"summary": "Refresh Dataset", "description": "Re-run the dataset's specification and publish a new immutable version (owner only).", "operationId": "refresh_dataset_api_datasets__did__refresh_post", "parameters": [{"name": "did", "in": "path", "required": true, "schema": {"type": "string", "title": "Did"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/datasets/{did}/download": {"post": {"summary": "Download Dataset", "description": "Have AID4T Engine fetch the dataset's raw data from their sources and package one zip.", "operationId": "download_dataset_api_datasets__did__download_post", "parameters": [{"name": "did", "in": "path", "required": true, "schema": {"type": "string", "title": "Did"}}, {"name": "version", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/arco": {"get": {"summary": "Arco Catalog", "description": "All analysis-ready, cloud-optimized (Zarr) products published by AID4T Engine (latest version of each).", "operationId": "arco_catalog_api_arco_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/api/events/{tdn_id}/arco": {"get": {"summary": "Event Arco", "description": "Zarr products for an event, each with a ready-to-run Python (xarray) snippet. Listing is open; reading\nthe data needs a free account (send your API key as `X-API-Key`).", "operationId": "event_arco_api_events__tdn_id__arco_get", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/admin/arco/{tdn_id}": {"post": {"summary": "Build Arco", "description": "Build a new immutable version of a Zarr product for an event (curators).", "operationId": "build_arco_api_admin_arco__tdn_id__post", "parameters": [{"name": "tdn_id", "in": "path", "required": true, "schema": {"type": "string", "title": "Tdn Id"}}, {"name": "authorization", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Authorization"}}, {"name": "x-api-key", "in": "header", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "X-Api-Key"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArcoBuildBody"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}}, "components": {"schemas": {"ArcoBuildBody": {"properties": {"product": {"type": "string", "title": "Product", "default": "radar_grid"}, "demo": {"type": "boolean", "title": "Demo", "default": false}, "radar": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Radar"}}, "type": "object", "title": "ArcoBuildBody"}, "AskBody": {"properties": {"question": {"type": "string", "title": "Question"}, "history": {"items": {"additionalProperties": true, "type": "object"}, "type": "array", "title": "History"}, "backend": {"anyOf": [{"type": "string", "enum": ["anthropic", "openai", "ollama", "rules"]}, {"type": "null"}], "title": "Backend"}, "mode": {"anyOf": [{"type": "string", "enum": ["parse", "agent"]}, {"type": "null"}], "title": "Mode"}, "conversation_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Conversation Id", "description": "Continue a multi-turn conversation (returned by a previous /api/ask call); omit to start a new one"}, "choice": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Choice", "description": "An option T offered for an ambiguous request ({query, workflow}); executed as given"}}, "type": "object", "required": ["question"], "title": "AskBody"}, "ContributionIn": {"properties": {"tdn_ids": {"items": {"type": "string"}, "type": "array", "minItems": 1, "title": "Tdn Ids", "description": "AID4T event ids this dataset belongs to (legacy TDN- ids accepted)"}, "modality": {"type": "string", "title": "Modality", "description": "Data type (modality id)"}, "title": {"type": "string", "title": "Title"}, "provider": {"type": "string", "title": "Provider", "description": "Organisation / team that produced the data"}, "license": {"type": "string", "title": "License", "description": "SPDX-style id, e.g. CC0-1.0, PDDL-1.0, US-Government-Work, CC-BY-4.0, ODC-BY-1.0, CC-BY-SA-4.0, ODbL-1.0, CC-BY-NC-4.0"}, "kind": {"type": "string", "enum": ["upload", "link"], "title": "Kind"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url", "description": "For kind=link: URL of the externally hosted resource"}, "description": {"type": "string", "title": "Description", "default": ""}, "doi": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Doi"}, "time_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Time Start", "description": "UTC start of the data (observations)"}, "time_end": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Time End"}, "lat": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lat", "description": "Representative location (e.g. radar or camera position)"}, "lon": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lon"}}, "type": "object", "required": ["tdn_ids", "modality", "title", "provider", "license", "kind"], "title": "ContributionIn"}, "DatasetSpec": {"properties": {"research_objective": {"type": "string", "minLength": 5, "title": "Research Objective", "description": "What the dataset is for (kept with the data)"}, "name": {"type": "string", "title": "Name", "description": "Short name; defaults to the start of the research objective", "default": ""}, "query": {"anyOf": [{"$ref": "#/components/schemas/QuerySpec"}, {"type": "null"}], "description": "Select events by event/location/modality/time"}, "event_ids": {"items": {"type": "string"}, "type": "array", "title": "Event Ids", "description": "…or list event ids explicitly"}, "modalities": {"items": {"type": "string"}, "type": "array", "title": "Modalities", "description": "Raw data types to link (empty = all available)"}, "include_features": {"type": "boolean", "title": "Include Features", "default": true}, "feature_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Feature Label", "description": "Keep only scans with this label, e.g. 'tornadic'"}, "include_zarr": {"type": "boolean", "title": "Include Zarr", "default": true}, "shared": {"type": "boolean", "title": "Shared", "description": "Visible to all signed-in users (default: only you)", "default": false}, "max_events": {"type": "integer", "maximum": 500.0, "minimum": 1.0, "title": "Max Events", "default": 200}}, "type": "object", "required": ["research_objective"], "title": "DatasetSpec"}, "DownloadSpec": {"properties": {"event_ids": {"items": {"type": "string"}, "type": "array", "title": "Event Ids", "description": "AID4T event ids"}, "query": {"anyOf": [{"$ref": "#/components/schemas/QuerySpec"}, {"type": "null"}], "description": "Select events by query instead of ids"}, "modalities": {"items": {"type": "string"}, "type": "array", "title": "Modalities", "description": "Modality ids/keywords; empty = all available"}, "free_window": {"type": "boolean", "title": "Free Window", "description": "Also include continuous-archive data for the query's place+time window (needs a query with location and time)", "default": false}, "max_events": {"type": "integer", "title": "Max Events", "default": 25}, "hrrr_subset": {"type": "boolean", "title": "Hrrr Subset", "description": "HRRR: deliver only selected GRIB2 fields (~40 MB/h) instead of the original files (~530 MB/h); the extraction is recorded in the manifest", "default": false}}, "type": "object", "title": "DownloadSpec"}, "HTTPValidationError": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ValidationError"}, "type": "array", "title": "Detail"}}, "type": "object", "title": "HTTPValidationError"}, "JobSpec": {"properties": {"workflow": {"type": "string", "title": "Workflow", "description": "Workflow id, e.g. nearground_wind, climatology, event_package"}, "event_ids": {"items": {"type": "string"}, "type": "array", "title": "Event Ids"}, "query": {"anyOf": [{"$ref": "#/components/schemas/QuerySpec"}, {"type": "null"}], "description": "Alternative to event_ids: select events by query"}, "params": {"additionalProperties": true, "type": "object", "title": "Params"}, "max_events": {"type": "integer", "title": "Max Events", "default": 10}}, "type": "object", "required": ["workflow"], "title": "JobSpec"}, "LoginBody": {"properties": {"email": {"type": "string", "title": "Email"}, "password": {"type": "string", "title": "Password"}}, "type": "object", "required": ["email", "password"], "title": "LoginBody"}, "PointRadius": {"properties": {"lat": {"type": "number", "title": "Lat"}, "lon": {"type": "number", "title": "Lon"}, "radius_km": {"type": "number", "title": "Radius Km", "default": 50.0}}, "type": "object", "required": ["lat", "lon"], "title": "PointRadius"}, "QuerySpec": {"properties": {"event_ids": {"items": {"type": "string"}, "type": "array", "title": "Event Ids", "description": "AID4T event identifiers (legacy TDN- ids accepted)"}, "text": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Text", "description": "Free-text match on event name / tags"}, "ef_min": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ef Min"}, "ef_max": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ef Max"}, "bbox": {"anyOf": [{"items": {"type": "number"}, "type": "array"}, {"type": "null"}], "title": "Bbox", "description": "[min_lon, min_lat, max_lon, max_lat]"}, "point": {"anyOf": [{"$ref": "#/components/schemas/PointRadius"}, {"type": "null"}]}, "place": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Place", "description": "Place name (city) resolved by gazetteer"}, "radius_km": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Radius Km", "description": "Search radius used with `place` (default 40 km)"}, "states": {"items": {"type": "string"}, "type": "array", "title": "States"}, "modalities": {"items": {"type": "string"}, "type": "array", "title": "Modalities", "description": "Modality ids/keywords; empty = all"}, "require": {"type": "string", "enum": ["any", "all", "none"], "title": "Require", "description": "'all'/'any': keep only events with all/any requested modality obtainable", "default": "none"}, "start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Start"}, "end": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "End"}, "include_free_window": {"type": "boolean", "title": "Include Free Window", "description": "Also list continuous-archive resources for location+time", "default": true}, "limit": {"type": "integer", "title": "Limit", "default": 200}}, "type": "object", "title": "QuerySpec"}, "RegisterBody": {"properties": {"email": {"type": "string", "title": "Email"}, "password": {"type": "string", "minLength": 8, "title": "Password"}, "name": {"type": "string", "title": "Name", "default": ""}, "affiliation": {"type": "string", "title": "Affiliation", "default": ""}, "sector": {"type": "string", "enum": ["academia", "government", "industry", "nonprofit", "student", "other", ""], "title": "Sector", "default": ""}}, "type": "object", "required": ["email", "password"], "title": "RegisterBody"}, "ReviewBody": {"properties": {"decision": {"type": "string", "enum": ["approved", "rejected"], "title": "Decision"}, "note": {"type": "string", "title": "Note", "default": ""}}, "type": "object", "required": ["decision"], "title": "ReviewBody"}, "RoleBody": {"properties": {"role": {"type": "string", "enum": ["user", "lead", "admin"], "title": "Role"}, "lead_modalities": {"items": {"type": "string"}, "type": "array", "title": "Lead Modalities"}}, "type": "object", "required": ["role"], "title": "RoleBody"}, "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"}}}}