{"openapi":"3.0.0","paths":{"/api/v1/agents/{id}/invoke":{"post":{"description":"Sends text to the agent and waits for its response.","operationId":"AgentController_invoke","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInvokeDto"}}}},"responses":{"200":{"description":"The agent responded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInvokeResponse"}}}},"400":{"description":"Missing `input`, or the agent rejected the input"},"404":{"description":"No such agent for this application"},"429":{"description":"The agent is at its concurrency limit"},"500":{"description":"The agent failed"},"502":{"description":"The model provider failed, or the agent disconnected"},"503":{"description":"No process is currently serving this agent"},"504":{"description":"The agent did not respond in time"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Invoke the agent","tags":["Agents"],"x-access":"execute"}},"/api/v1/agents/{id}/stream":{"post":{"description":"Sends text to the agent and streams its answer as Server-Sent Events.\n\nFour event types are emitted. `done` and `error` are the **only** terminal events - a stream that\nends with neither was truncated in transit, and the answer should be treated as incomplete.\n\n```\nevent: start\ndata: {\"invocationId\":\"...\"}\n\nevent: delta\ndata: {\"text\":\"Hello\"}\n\nevent: done\ndata: {\"finishReason\":\"stop\",\"model\":\"...\",\"usage\":{...},\"durationMs\":1234}\n```\n\nLines beginning `:` are keepalive comments and carry no meaning.","operationId":"AgentController_stream","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInvokeDto"}}}},"responses":{"200":{"description":"The agent accepted the invocation and the event stream has begun","content":{"text/event-stream":{"schema":{"type":"string","description":"SSE frames whose `data` is one of the event payloads below"},"examples":{"start":{"value":{"$ref":"#/components/schemas/AgentStreamStartEvent"}},"delta":{"value":{"$ref":"#/components/schemas/AgentStreamDeltaEvent"}},"done":{"value":{"$ref":"#/components/schemas/AgentStreamDoneEvent"}},"error":{"value":{"$ref":"#/components/schemas/AgentStreamErrorEvent"}}}}}},"400":{"description":"Missing `input`, or the agent rejected the input"},"404":{"description":"No such agent for this application"},"429":{"description":"The agent is at its concurrency limit"},"500":{"description":"The agent failed before starting the stream"},"502":{"description":"The model provider failed, or the agent disconnected"},"503":{"description":"No process is currently serving this agent"},"504":{"description":"The agent sent nothing before the timeout"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Invoke the agent and stream the response","tags":["Agents"],"x-access":"execute"}},"/api/v1/agents":{"get":{"description":"Retrieve an array of Agents. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Agents by field values.\n- Sort retrieved Agents by field values.\n- Join related resources.\n- Limit the number of Agents retrieved.\n- Offset the Agents retrieved.","operationId":"AgentController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Agents response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Agent"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Agents","tags":["Agents"],"x-access":"read"},"post":{"description":"Create a new Agent.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"AgentController_createOne","parameters":[],"responses":{"201":{"description":"Create Agent response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Agent","tags":["Agents"],"x-access":"write"}},"/api/v1/agents/{id}":{"get":{"description":"Retrieve the specified Agent. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"AgentController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Agent ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Agent response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Agent not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Agent","tags":["Agents"],"x-access":"read"},"put":{"description":"Update the specified Agent using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"AgentController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Agent ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Agent response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Agent not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Agent","tags":["Agents"],"x-access":"write"},"delete":{"description":"Delete the specified Agent.","operationId":"AgentController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Agent ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Agent response"},"401":{"description":"Unauthorized"},"404":{"description":"Agent not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Agent","tags":["Agents"],"x-access":"write"}},"/api/v1/agents/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"AgentController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Agents"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"AgentController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Agents"]}},"/api/v1/agents/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"AgentController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Agents"]},"put":{"description":"Set resource metadata by key.","operationId":"AgentController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Agents"]},"delete":{"description":"Delete resource metadata by key.","operationId":"AgentController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Agents"]}},"/api/v1/apikeys":{"get":{"description":"Retrieve an array of ApiKeys. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved ApiKeys by field values.\n- Sort retrieved ApiKeys by field values.\n- Join related resources.\n- Limit the number of ApiKeys retrieved.\n- Offset the ApiKeys retrieved.","operationId":"ApiKeyController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get ApiKeys response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKey"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get ApiKeys","tags":["API Keys"],"x-access":"read"},"post":{"description":"Create a new ApiKey.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"ApiKeyController_createOne","parameters":[],"responses":{"201":{"description":"Create ApiKey response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create ApiKey","tags":["API Keys"],"x-access":"write"}},"/api/v1/apikeys/{id}":{"get":{"description":"Retrieve the specified ApiKey. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"ApiKeyController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"ApiKey ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get ApiKey response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"401":{"description":"Unauthorized"},"404":{"description":"ApiKey not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get ApiKey","tags":["API Keys"],"x-access":"read"},"delete":{"description":"Delete the specified ApiKey.","operationId":"ApiKeyController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"ApiKey ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete ApiKey response"},"401":{"description":"Unauthorized"},"404":{"description":"ApiKey not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete ApiKey","tags":["API Keys"],"x-access":"write"}},"/api/v1/apikeys/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"ApiKeyController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["API Keys"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"ApiKeyController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["API Keys"]}},"/api/v1/apikeys/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"ApiKeyController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["API Keys"]},"put":{"description":"Set resource metadata by key.","operationId":"ApiKeyController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["API Keys"]},"delete":{"description":"Delete resource metadata by key.","operationId":"ApiKeyController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["API Keys"]}},"/api/v1/appconfig":{"get":{"description":"Returns configuration for the application associated with the supplied API key.","operationId":"AppConfigController_getConfig","parameters":[],"responses":{"200":{"description":"Current AppConfig response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"flow":{"$ref":"#/components/schemas/ConfigDto"}},"example":{"key1":{},"key2":{},"flow":{"key1":{},"key2":{},"version":{"tag":"v1.0.48","hash":"9d9aa13","timestamp":1603280031}}}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get current AppConfig","tags":["Application Configuration"],"x-access":"execute"},"put":{"description":"Set entire application config value","operationId":"AppConfigController_setConfig","parameters":[],"requestBody":{"required":true,"description":"AppConfig value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"AppConfig response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set AppConfig","tags":["Application Configuration"]}},"/api/v1/appconfig/{id}":{"get":{"description":"Returns config value for the application associated with the supplied API key.","operationId":"AppConfigController_getKey","parameters":[{"name":"id","required":true,"in":"path","description":"AppConfig key (supports dotted notation)","schema":{"type":"string"}}],"responses":{"200":{"description":"Current AppConfig response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"flow":{"$ref":"#/components/schemas/ConfigDto"}},"example":{"key1":{},"key2":{},"flow":{"key1":{},"key2":{},"version":{"tag":"v1.0.48","hash":"9d9aa13","timestamp":1603280031}}}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get AppConfig value by key","tags":["Application Configuration"],"x-access":"execute"},"put":{"description":"Set application config value by key.","operationId":"AppConfigController_setKey","parameters":[{"name":"id","required":true,"in":"path","description":"AppConfig key (supports dotted notation)","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"AppConfig key value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"AppConfig response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set AppConfig by key","tags":["Application Configuration"]},"delete":{"description":"Delete AppConfig value by key.","operationId":"AppConfigController_deleteKey","parameters":[{"name":"id","required":true,"in":"path","description":"AppConfig key (supports dotted notation)","schema":{"type":"string"}}],"responses":{"200":{"description":"AppConfig response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete config value by key","tags":["Application Configuration"]}},"/api/v1/applications":{"get":{"description":"Retrieve an array of Applications. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Applications by field values.\n- Sort retrieved Applications by field values.\n- Join related resources.\n- Limit the number of Applications retrieved.\n- Offset the Applications retrieved.","operationId":"ApplicationController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Applications response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Application"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Applications","tags":["Applications"],"x-access":"read"},"post":{"description":"Create a new Application.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"ApplicationController_createOne","parameters":[],"responses":{"201":{"description":"Create Application response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Application","tags":["Applications"],"x-access":"write"}},"/api/v1/applications/{id}":{"get":{"description":"Retrieve the specified Application. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"ApplicationController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Application ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Application response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Application not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Application","tags":["Applications"],"x-access":"read"},"put":{"description":"Update the specified Application using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"ApplicationController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Application ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Application response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Application not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Application","tags":["Applications"],"x-access":"write"},"delete":{"description":"Delete the specified Application.","operationId":"ApplicationController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Application ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Application response"},"401":{"description":"Unauthorized"},"404":{"description":"Application not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Application","tags":["Applications"],"x-access":"write"}},"/api/v1/applications/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"ApplicationController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Applications"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"ApplicationController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Applications"]}},"/api/v1/applications/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"ApplicationController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Applications"]},"put":{"description":"Set resource metadata by key.","operationId":"ApplicationController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Applications"]},"delete":{"description":"Delete resource metadata by key.","operationId":"ApplicationController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Applications"]}},"/api/v1/auth/login":{"post":{"description":"Log in using the supplied credentials.","operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"Current User response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLoginResponse"}}}},"401":{"description":"Unauthorized"}},"summary":"Log In","tags":["Authentication"]}},"/api/v1/auth/logout":{"post":{"description":"Log out and invalidate the associated refresh token.","operationId":"AuthController_logout","parameters":[{"name":"Authentication","in":"header","description":"Authorization bearer token","required":true,"schema":{"type":"string","example":"Bearer <jwt token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string","description":"Refresh token to invalidate"}}}}}},"responses":{"204":{"description":"Log Out response"},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Log Out","tags":["Authentication"],"x-access":"execute"}},"/api/v1/auth/refresh":{"post":{"description":"Supply a valid refresh token to retrieve a refreshed JWT authentication token.","operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string"},"applicationId":{"type":"string"}}}}}},"responses":{"200":{"description":"Refreshed JWT authentication token","content":{"application/json":{"schema":{"type":"string"}}}}},"summary":"Refresh authentication token","tags":["Authentication"]}},"/api/v1/auth/changepassword":{"post":{"description":"Change the password of the User identified by the supplied Authorization token.","operationId":"AuthController_changePassword","parameters":[{"name":"Authentication","in":"header","description":"Authorization bearer token","required":true,"schema":{"type":"string","example":"Bearer <jwt token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordDto"}}}},"responses":{"204":{"description":"Change Password response"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Change password","tags":["Authentication"],"x-access":"execute"}},"/api/v1/auth/signup":{"post":{"description":"Creates a new User. Note that the supplied email address must be approved for sign-up.","operationId":"AuthController_signUp","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupDto"}}}},"responses":{"200":{"description":"Sign Up response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Unauthorized"}},"summary":"Sign up new user","tags":["Authentication"]}},"/api/v1/auth/confirmsignup":{"get":{"description":"This endpoint is supplied in the sign-up confirmation email sent to new users.","operationId":"AuthController_confirmSignUp","parameters":[{"name":"email","required":true,"in":"query","schema":{"type":"string"}},{"name":"redirect","required":true,"in":"path","description":"Redirection URL","schema":{"type":"string"}},{"name":"token","required":true,"in":"path","description":"Sign-up verification token","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to specified URL on successful sign-up"},"401":{"description":"Unauthorized"}},"summary":"Confirm sign-up","tags":["Authentication"]}},"/api/v1/auth/requestpasswordreset":{"post":{"description":"Request a password reset email.","operationId":"AuthController_requestPasswordReset","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestPasswordResetDto"}}}},"responses":{"204":{"description":"Request password reset response"},"401":{"description":"Unauthorized"}},"summary":"Request password reset","tags":["Authentication"]}},"/api/v1/auth/resetpassword":{"post":{"description":"Reset a password in response to a password-reset request. This endpoint is supplied in the password-reset email sent to a user.","operationId":"AuthController_resetPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordDto"}}}},"responses":{"204":{"description":"Reset password response"},"401":{"description":"Unauthorized"}},"summary":"Reset password","tags":["Authentication"]}},"/api/v1/config":{"get":{"operationId":"ConfigController_getConfig","parameters":[],"responses":{"200":{"description":"Configuration response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigDto"},"example":{"key1":{},"key2":{},"version":{"tag":"v1.0.48","hash":"9d9aa13","timestamp":1603280031}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get server configuration","tags":["Server Configuration"]}},"/api/v1/contactpoints/{id}/send":{"post":{"description":"Send a notification to the contact point.","operationId":"ContactPointController_send","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactPointSendRequestDto"}}}},"responses":{"202":{"description":"Notification accepted for delivery"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Send a notification to the contact point","tags":["Contact Points"],"x-access":"execute"}},"/api/v1/contactpoints/drivers":{"get":{"description":"Returns a list of available contact point drivers.","operationId":"ContactPointController_getDrivers","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get drivers","tags":["Contact Points"],"x-access":"read"}},"/api/v1/contactpoints":{"get":{"description":"Retrieve an array of ContactPoints. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved ContactPoints by field values.\n- Sort retrieved ContactPoints by field values.\n- Join related resources.\n- Limit the number of ContactPoints retrieved.\n- Offset the ContactPoints retrieved.","operationId":"ContactPointController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get ContactPoints response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContactPoint"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get ContactPoints","tags":["Contact Points"],"x-access":"read"},"post":{"description":"Create a new ContactPoint.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"ContactPointController_createOne","parameters":[],"responses":{"201":{"description":"Create ContactPoint response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactPoint"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create ContactPoint","tags":["Contact Points"],"x-access":"write"}},"/api/v1/contactpoints/{id}":{"get":{"description":"Retrieve the specified ContactPoint. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"ContactPointController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"ContactPoint ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get ContactPoint response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactPoint"}}}},"401":{"description":"Unauthorized"},"404":{"description":"ContactPoint not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get ContactPoint","tags":["Contact Points"],"x-access":"read"},"put":{"description":"Update the specified ContactPoint using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"ContactPointController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"ContactPoint ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update ContactPoint response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactPoint"}}}},"401":{"description":"Unauthorized"},"404":{"description":"ContactPoint not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update ContactPoint","tags":["Contact Points"],"x-access":"write"},"delete":{"description":"Delete the specified ContactPoint.","operationId":"ContactPointController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"ContactPoint ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete ContactPoint response"},"401":{"description":"Unauthorized"},"404":{"description":"ContactPoint not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete ContactPoint","tags":["Contact Points"],"x-access":"write"}},"/api/v1/contactpoints/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"ContactPointController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Contact Points"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"ContactPointController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Contact Points"]}},"/api/v1/contactpoints/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"ContactPointController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Contact Points"]},"put":{"description":"Set resource metadata by key.","operationId":"ContactPointController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Contact Points"]},"delete":{"description":"Delete resource metadata by key.","operationId":"ContactPointController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Contact Points"]}},"/api/v1/databases/drivers":{"get":{"description":"Returns a list of available database drivers.","operationId":"DatasbaseController_getDrivers","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get drivers","tags":["Databases"],"x-access":"execute"}},"/api/v1/databases":{"get":{"description":"Retrieve an array of Databases. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Databases by field values.\n- Sort retrieved Databases by field values.\n- Join related resources.\n- Limit the number of Databases retrieved.\n- Offset the Databases retrieved.","operationId":"DatasbaseController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Databases response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Database"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Databases","tags":["Databases"],"x-access":"read"},"post":{"description":"Create a new Database.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"DatasbaseController_createOne","parameters":[],"responses":{"201":{"description":"Create Database response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Database"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Database","tags":["Databases"],"x-access":"write"}},"/api/v1/databases/{id}":{"get":{"description":"Retrieve the specified Database. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"DatasbaseController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Database ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Database response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Database"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Database not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Database","tags":["Databases"],"x-access":"read"},"put":{"description":"Update the specified Database using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"DatasbaseController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Database ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Database response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Database"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Database not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Database","tags":["Databases"],"x-access":"write"},"delete":{"description":"Delete the specified Database.","operationId":"DatasbaseController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Database ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Database response"},"401":{"description":"Unauthorized"},"404":{"description":"Database not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Database","tags":["Databases"],"x-access":"write"}},"/api/v1/datasets":{"get":{"description":"Retrieve an array of Datasets. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Datasets by field values.\n- Sort retrieved Datasets by field values.\n- Join related resources.\n- Limit the number of Datasets retrieved.\n- Offset the Datasets retrieved.","operationId":"DatasetController_getMany","parameters":[{"name":"tags","required":true,"in":"query","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Datasets response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Dataset"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Datasets","tags":["Datasets"],"x-access":"read"},"post":{"description":"Create a new Dataset.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"DatasetController_createOne","parameters":[],"responses":{"201":{"description":"Create Dataset response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Dataset","tags":["Datasets"],"x-access":"write"}},"/api/v1/datasets/{id}":{"get":{"description":"Retrieve the specified Dataset. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"DatasetController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Dataset ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Dataset response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Dataset not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Dataset","tags":["Datasets"],"x-access":"read"},"put":{"description":"Update the specified Dataset using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"DatasetController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Dataset ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Dataset response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Dataset not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Dataset","tags":["Datasets"],"x-access":"write"},"delete":{"description":"Delete the specified Dataset.","operationId":"DatasetController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Dataset ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Dataset response"},"401":{"description":"Unauthorized"},"404":{"description":"Dataset not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Dataset","tags":["Datasets"],"x-access":"write"}},"/api/v1/datasets/{id}/query":{"get":{"description":"Query the specified dataset using simplified query string syntax.\n\nSpecify query parameters to:\n\n- Select attributes to retrieve.\n- Filter results by attribute values.\n- Supply query parameters.\n- Sort results.\n- Limit the number of results retrieved.\n- Offset the results retrieved.\n\nSee [Simplified Query Syntax](./datasets/dataset-queries.md#simplified-query-syntax).\n  ","operationId":"DatasetController_querySimple","parameters":[{"name":"id","required":true,"in":"path","description":"Dataset ID","schema":{"example":"dataset-id","type":"string"}},{"name":"format","required":false,"in":"query","description":"Response format","schema":{"default":"json","example":"json","type":"string","enum":["json","geojson","csv"]}},{"name":"explain","required":false,"in":"query","description":"Explain query","schema":{"default":false,"allOf":[{"$ref":"#/components/schemas/Object"}]}},{"name":"attributes","required":false,"in":"query","description":"Select attributes to return","explode":true,"style":"form","schema":{"type":"array","items":{"type":"string"}}},{"name":"filter","required":false,"in":"query","description":"Filter results","explode":true,"style":"deepObject","schema":{"additionalProperties":true,"type":"object"}},{"name":"sort","required":false,"in":"query","description":"Sort by attributes","explode":true,"style":"form","schema":{"type":"array","items":{"type":"string"}}},{"name":"limit","required":false,"in":"query","description":"Limit number of results","schema":{"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Offset results","schema":{"example":0,"type":"number"}},{"name":"filename","required":false,"in":"query","description":"Specify download file name\n\nAdds a `Content-Disposition: attachment; filename=\"<filename>\"` header to the response.\nThis hints that the response should be downloaded when the request is issued from a browser.\n  ","schema":{"type":"string"}}],"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/"}}}}},"404":{"description":"Dataset not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Query Dataset (simple)","tags":["Datasets"],"x-access":"execute"},"post":{"description":"Query the specified dataset using advanced post body syntax.\n\nSpecify query parameters to:\n\n- Select attributes to retrieve.\n- Filter results by attribute values.\n- Perform grouping and aggregation.\n- Sort results.\n- Limit the number of results retrieved.\n- Offset the results retrieved.\n\nSee [Dataset Query Definitions](./datasets/dataset-queries.md#flo-w-query-definitions).\n  ","operationId":"DatasetController_queryAdvanced","parameters":[{"name":"id","required":true,"in":"path","description":"Dataset ID","schema":{"example":"dataset-id","type":"string"}},{"name":"format","required":false,"in":"query","description":"Response format","schema":{"default":"json","type":"string","enum":["json","geojson","csv"]}},{"name":"explain","required":false,"in":"query","description":"Explain query","schema":{"default":false,"allOf":[{"$ref":"#/components/schemas/Object"}]}},{"name":"timeout","required":false,"in":"query","description":"Query timeout (ms)","schema":{"default":null,"type":"number"}},{"name":"filename","required":false,"in":"query","description":"Specify download file name\n\nAdds a `Content-Disposition: attachment; filename=\"<filename>\"` header to the response.\nThis hints that the response should be downloaded when the request is issued from a browser.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvancedQueryBodyDto"}}}},"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/"}}}}},"404":{"description":"Dataset not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Query Dataset (advanced)","tags":["Datasets"],"x-access":"execute"}},"/api/v1/datasets/{id}/export":{"get":{"description":"Export the specified dataset\n    ","operationId":"DatasetController_export","parameters":[{"name":"id","required":true,"in":"path","description":"Dataset ID","schema":{"example":"dataset-id","type":"string"}},{"name":"format","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Query results","content":{"application/binary":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/"}}}}},"404":{"description":"Dataset not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Export Dataset","tags":["Datasets"],"x-access":"read"}},"/api/v1/datasets/{id}/ingest":{"post":{"description":"insert, upsert and delete dataset records","operationId":"DatasetController_ingest","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Ingest data to dataset","tags":["Datasets"],"x-access":"write"}},"/api/v1/datasets/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"DatasetController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Datasets"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"DatasetController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Datasets"]}},"/api/v1/datasets/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"DatasetController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Datasets"]},"put":{"description":"Set resource metadata by key.","operationId":"DatasetController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Datasets"]},"delete":{"description":"Delete resource metadata by key.","operationId":"DatasetController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Datasets"]}},"/fonts.json":{"get":{"description":"Returns a list of installed map fonts.","operationId":"FontController_getFontIndex","parameters":[],"responses":{"200":{"description":"Installed font list","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"summary":"Get installed map fonts","tags":["Map Endpoints"]}},"/fonts/{fontstack}/{range}.pbf":{"get":{"description":"Returns the specified map font.","operationId":"FontController_getFont","parameters":[{"name":"fontstack","required":true,"in":"path","description":"Font stack","schema":{"example":"Metropolis Regular,Noto Sans Regular","type":"string"}},{"name":"range","required":true,"in":"path","description":"Range","schema":{"example":"0-255","type":"string"}}],"responses":{"200":{"description":"Requested map font","content":{"application/protobuf":{"schema":{"type":"binary"}}}}},"summary":"Get map font","tags":["Map Endpoints"]}},"/api/v1/healthcheck":{"get":{"operationId":"HealthCheckController_getHealthcheck","parameters":[],"responses":{"200":{"description":"Healthcheck response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"}}},"example":{"status":"OK"}}}}},"summary":"Get server healthcheck","tags":["Healthcheck","Healthcheck"]}},"/api/v1/jobs":{"get":{"description":"Retrieve an array of Jobs. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Jobs by field values.\n- Sort retrieved Jobs by field values.\n- Join related resources.\n- Limit the number of Jobs retrieved.\n- Offset the Jobs retrieved.","operationId":"JobController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Jobs response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Job"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Jobs","tags":["Jobs"],"x-access":"read"},"post":{"description":"Create a new Job.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"JobController_createOne","parameters":[],"responses":{"201":{"description":"Create Job response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Job","tags":["Jobs"],"x-access":"write"}},"/api/v1/jobs/{id}":{"get":{"description":"Retrieve the specified Job. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"JobController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Job ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Job response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Job not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Job","tags":["Jobs"],"x-access":"read"},"put":{"description":"Update the specified Job using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"JobController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Job ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Job response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Job not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Job","tags":["Jobs"],"x-access":"write"},"delete":{"description":"Delete a job.","operationId":"JobController_deleteJob","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Delete Job"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete a job","tags":["Jobs"],"x-access":"execute"}},"/api/v1/jobs/submit":{"post":{"description":"Submit a new processing job.","operationId":"JobController_submit","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmitDto"}}}},"responses":{"200":{"description":"Submitted job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Submit a new job","tags":["Jobs"],"x-access":"execute"}},"/api/v1/jobs/{id}/status":{"get":{"description":"Get the current status of a job.","operationId":"JobController_getStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Job status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusDto"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get status of a job","tags":["Jobs"],"x-access":"read"},"post":{"description":"Update the current status of a job.","operationId":"JobController_setStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusDto"}}}},"responses":{"200":{"description":"Updated Job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update status of a job","tags":["Jobs"],"x-access":"write"}},"/api/v1/jobs/{id}/cancel":{"post":{"description":"Cancel a job.","operationId":"JobController_cancelJob","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Job status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Cancel a job","tags":["Jobs"],"x-access":"execute"}},"/api/v1/jobs/request":{"post":{"description":"Request a job.","operationId":"JobController_requestJob","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRequestDto"}}}},"responses":{"204":{"description":"Request a pending Job for processing"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Request a job","tags":["Jobs"],"x-access":"write"}},"/api/v1/jobs/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"JobController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Jobs"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"JobController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Jobs"]}},"/api/v1/jobs/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"JobController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Jobs"]},"put":{"description":"Set resource metadata by key.","operationId":"JobController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Jobs"]},"delete":{"description":"Delete resource metadata by key.","operationId":"JobController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Jobs"]}},"/maps/{id}.json":{"get":{"description":"Retrieve the MapboxGL map style specification for the specified Style.","operationId":"MapController_getMapStyle","parameters":[{"name":"id","required":true,"in":"path","description":"Map Style ID","schema":{"example":"style-id","type":"string"}}],"responses":{"200":{"description":"Requested map style","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get map style","tags":["Map Endpoints"],"x-access":"execute"}},"/api/v1/maplayers":{"get":{"description":"Retrieve an array of MapLayers. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved MapLayers by field values.\n- Sort retrieved MapLayers by field values.\n- Join related resources.\n- Limit the number of MapLayers retrieved.\n- Offset the MapLayers retrieved.","operationId":"MapLayerController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get MapLayers response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MapLayer"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get MapLayers","tags":["Map Layers"],"x-access":"read"},"post":{"description":"Create a new MapLayer.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"MapLayerController_createOne","parameters":[],"responses":{"201":{"description":"Create MapLayer response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapLayer"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create MapLayer","tags":["Map Layers"],"x-access":"write"}},"/api/v1/maplayers/{id}":{"get":{"description":"Retrieve the specified MapLayer. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"MapLayerController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"MapLayer ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get MapLayer response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapLayer"}}}},"401":{"description":"Unauthorized"},"404":{"description":"MapLayer not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get MapLayer","tags":["Map Layers"],"x-access":"read"},"put":{"description":"Update the specified MapLayer using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"MapLayerController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"MapLayer ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update MapLayer response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapLayer"}}}},"401":{"description":"Unauthorized"},"404":{"description":"MapLayer not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update MapLayer","tags":["Map Layers"],"x-access":"write"},"delete":{"description":"Delete the specified MapLayer.","operationId":"MapLayerController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"MapLayer ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete MapLayer response"},"401":{"description":"Unauthorized"},"404":{"description":"MapLayer not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete MapLayer","tags":["Map Layers"],"x-access":"write"}},"/api/v1/maplayers/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"MapLayerController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Map Layers"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"MapLayerController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Map Layers"]}},"/api/v1/maplayers/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"MapLayerController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Map Layers"]},"put":{"description":"Set resource metadata by key.","operationId":"MapLayerController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Map Layers"]},"delete":{"description":"Delete resource metadata by key.","operationId":"MapLayerController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Map Layers"]}},"/api/v1/media":{"post":{"description":"Upload a media file. For supported formats see here.","operationId":"MediaController_uploadMedia","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MediaUploadDto"}}}},"responses":{"201":{"description":"Media Upload response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Upload a media file","tags":["Media"],"x-access":"write"},"get":{"description":"Retrieve an array of Media. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Media by field values.\n- Sort retrieved Media by field values.\n- Join related resources.\n- Limit the number of Media retrieved.\n- Offset the Media retrieved.","operationId":"MediaController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Media response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Media"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Media","tags":["Media"],"x-access":"read"}},"/api/v1/media/{id}/content":{"get":{"description":"Get the requested media content.","operationId":"MediaController_getMediaContent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Requested media content"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get media content","tags":["Media"],"x-access":"execute"}},"/api/v1/media/{id}":{"get":{"description":"Retrieve the specified Media. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"MediaController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Media ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Media response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Media not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Media","tags":["Media"],"x-access":"read"},"put":{"description":"Update the specified Media using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"MediaController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Media ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Media response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Media not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Media","tags":["Media"],"x-access":"write"},"delete":{"description":"Delete the specified Media.","operationId":"MediaController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Media ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Media response"},"401":{"description":"Unauthorized"},"404":{"description":"Media not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Media","tags":["Media"],"x-access":"write"}},"/api/v1/media/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"MediaController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Media"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"MediaController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Media"]}},"/api/v1/media/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"MediaController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Media"]},"put":{"description":"Set resource metadata by key.","operationId":"MediaController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Media"]},"delete":{"description":"Delete resource metadata by key.","operationId":"MediaController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Media"]}},"/metrics":{"get":{"operationId":"MetricsController_getMetrics","parameters":[],"responses":{"200":{"description":""}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get server metrics","tags":["Server Metrics"]}},"/metrics/pipelines":{"get":{"operationId":"MetricsController_getPipelineMetrics","parameters":[],"responses":{"200":{"description":""}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get pipeline metrics","tags":["Server Metrics"]}},"/api/v1/pipelines/{id}/heartbeat":{"post":{"description":"This endpoint should be called periodically by a running pipeline to indicate that it is still operational.\nThe heartbeatAt timestamp for the resource is updated to the current time.\n  ","operationId":"PipelineController_heartbeat","parameters":[{"name":"id","required":true,"in":"path","description":"Pipeline ID","schema":{"example":"pipeline-id","type":"string"}}],"responses":{"204":{"description":"Heartbeat updated successfully"},"404":{"description":"Piepline not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Send pipeline heartbeat","tags":["Pipelines"],"x-access":"write"}},"/api/v1/pipelines/publish-metrics":{"post":{"description":"This endpoint should be called periodically by a running pipeline to register metrics.","operationId":"PipelineController_publishMetrics","parameters":[],"requestBody":{"required":true,"description":"Metrics to be published","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PipelineMetric"}},"examples":{"example1":{"description":"Example of publishing an array of metrics","value":[{"pipelineId":"pipeline-id","componentId":"component-1","environment":"prod","name":"metric1","timestamp":"2026-09-05T11:28:06.546Z","value":123.45},{"pipelineId":"pipeline-id","componentId":"component-2","environment":"prod","name":"metric2","timestamp":"2026-09-05T11:28:06.546Z","value":123.45}]}}}}},"responses":{"204":{"description":"Metrics published successfully"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Publish pipeline metrics","tags":["Pipelines"],"x-access":"write"}},"/api/v1/pipelines":{"get":{"description":"Retrieve an array of Pipelines. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Pipelines by field values.\n- Sort retrieved Pipelines by field values.\n- Join related resources.\n- Limit the number of Pipelines retrieved.\n- Offset the Pipelines retrieved.","operationId":"PipelineController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Pipelines response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Pipeline"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Pipelines","tags":["Pipelines"],"x-access":"read"},"post":{"description":"Create a new Pipeline.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"PipelineController_createOne","parameters":[],"responses":{"201":{"description":"Create Pipeline response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Pipeline","tags":["Pipelines"],"x-access":"write"}},"/api/v1/pipelines/{id}":{"get":{"description":"Retrieve the specified Pipeline. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"PipelineController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Pipeline ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Pipeline response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Pipeline not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Pipeline","tags":["Pipelines"],"x-access":"read"},"put":{"description":"Update the specified Pipeline using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"PipelineController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Pipeline ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Pipeline response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pipeline"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Pipeline not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Pipeline","tags":["Pipelines"],"x-access":"write"},"delete":{"description":"Delete the specified Pipeline.","operationId":"PipelineController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Pipeline ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Pipeline response"},"401":{"description":"Unauthorized"},"404":{"description":"Pipeline not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Pipeline","tags":["Pipelines"],"x-access":"write"}},"/api/v1/pipelines/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"PipelineController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Pipelines"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"PipelineController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Pipelines"]}},"/api/v1/pipelines/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"PipelineController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Pipelines"]},"put":{"description":"Set resource metadata by key.","operationId":"PipelineController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Pipelines"]},"delete":{"description":"Delete resource metadata by key.","operationId":"PipelineController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Pipelines"]}},"/api/v1/pipelines/{pipelineId}/components":{"get":{"description":"Retrieve an array of PipelineComponents. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved PipelineComponents by field values.\n- Sort retrieved PipelineComponents by field values.\n- Join related resources.\n- Limit the number of PipelineComponents retrieved.\n- Offset the PipelineComponents retrieved.","operationId":"PipelineComponentController_getMany","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get PipelineComponents response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PipelineComponent"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get PipelineComponents","tags":["Pipelines Components"],"x-access":"read"},"post":{"description":"Create a new PipelineComponent.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"PipelineComponentController_createOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"Create PipelineComponent response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineComponent"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create PipelineComponent","tags":["Pipelines Components"],"x-access":"write"}},"/api/v1/pipelines/{pipelineId}/components/{id}":{"get":{"description":"Retrieve the specified PipelineComponent. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"PipelineComponentController_getOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"PipelineComponent ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get PipelineComponent response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineComponent"}}}},"401":{"description":"Unauthorized"},"404":{"description":"PipelineComponent not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get PipelineComponent","tags":["Pipelines Components"],"x-access":"read"},"put":{"description":"Update the specified PipelineComponent using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"PipelineComponentController_replaceOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"PipelineComponent ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update PipelineComponent response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineComponent"}}}},"401":{"description":"Unauthorized"},"404":{"description":"PipelineComponent not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update PipelineComponent","tags":["Pipelines Components"],"x-access":"write"},"delete":{"description":"Delete the specified PipelineComponent.","operationId":"PipelineComponentController_deleteOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"PipelineComponent ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete PipelineComponent response"},"401":{"description":"Unauthorized"},"404":{"description":"PipelineComponent not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete PipelineComponent","tags":["Pipelines Components"],"x-access":"write"}},"/api/v1/pipelines/{pipelineId}/components/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"PipelineComponentController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Pipelines Components"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"PipelineComponentController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Pipelines Components"]}},"/api/v1/pipelines/{pipelineId}/components/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"PipelineComponentController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Pipelines Components"]},"put":{"description":"Set resource metadata by key.","operationId":"PipelineComponentController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Pipelines Components"]},"delete":{"description":"Delete resource metadata by key.","operationId":"PipelineComponentController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Pipelines Components"]}},"/api/v1/pipelines/{pipelineId}/components/{componentId}/metrics":{"get":{"description":"Retrieve an array of PipelineMetrics. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved PipelineMetrics by field values.\n- Sort retrieved PipelineMetrics by field values.\n- Join related resources.\n- Limit the number of PipelineMetrics retrieved.\n- Offset the PipelineMetrics retrieved.","operationId":"PipelineMetricController_getMany","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"componentId","required":true,"in":"path","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get PipelineMetrics response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PipelineMetric"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get PipelineMetrics","tags":["Pipeline Metrics"],"x-access":"read"},"post":{"description":"Create a new PipelineMetric.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"PipelineMetricController_createOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"componentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"Create PipelineMetric response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineMetric"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create PipelineMetric","tags":["Pipeline Metrics"],"x-access":"write"}},"/api/v1/pipelines/{pipelineId}/components/{componentId}/metrics/{id}":{"get":{"description":"Retrieve the specified PipelineMetric. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"PipelineMetricController_getOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"componentId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"PipelineMetric ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get PipelineMetric response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineMetric"}}}},"401":{"description":"Unauthorized"},"404":{"description":"PipelineMetric not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get PipelineMetric","tags":["Pipeline Metrics"],"x-access":"read"},"put":{"description":"Update the specified PipelineMetric using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"PipelineMetricController_replaceOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"componentId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"PipelineMetric ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update PipelineMetric response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineMetric"}}}},"401":{"description":"Unauthorized"},"404":{"description":"PipelineMetric not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update PipelineMetric","tags":["Pipeline Metrics"],"x-access":"write"},"delete":{"description":"Delete the specified PipelineMetric.","operationId":"PipelineMetricController_deleteOne","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}},{"name":"componentId","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"PipelineMetric ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete PipelineMetric response"},"401":{"description":"Unauthorized"},"404":{"description":"PipelineMetric not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete PipelineMetric","tags":["Pipeline Metrics"],"x-access":"write"}},"/sprites/{path}":{"get":{"description":"Get a map sprite file.","operationId":"SpriteController_getSprites","parameters":[{"name":"path","required":true,"in":"path","description":"Path to sprite file","schema":{"example":"sprite-file","type":"string"}}],"responses":{"200":{"description":"Requested sprite file","content":{"application/json":{"schema":{"type":"binary"}}}}},"summary":"Get map sprite file","tags":["Map Endpoints"]}},"/api/v1/styles":{"get":{"description":"Retrieve an array of Styles. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Styles by field values.\n- Sort retrieved Styles by field values.\n- Join related resources.\n- Limit the number of Styles retrieved.\n- Offset the Styles retrieved.","operationId":"StyleController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Styles response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Style"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Styles","tags":["Map Styles"],"x-access":"read"},"post":{"description":"Create a new Style.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"StyleController_createOne","parameters":[],"responses":{"201":{"description":"Create Style response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Style"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create Style","tags":["Map Styles"],"x-access":"write"}},"/api/v1/styles/{id}":{"get":{"description":"Retrieve the specified Style. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"StyleController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Style ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Style response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Style"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Style not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Style","tags":["Map Styles"],"x-access":"read"},"put":{"description":"Update the specified Style using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"StyleController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"Style ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update Style response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Style"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Style not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update Style","tags":["Map Styles"],"x-access":"write"},"delete":{"description":"Delete the specified Style.","operationId":"StyleController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"Style ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete Style response"},"401":{"description":"Unauthorized"},"404":{"description":"Style not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete Style","tags":["Map Styles"],"x-access":"write"}},"/tiles/{id}/{z}/{x}/{y}.{ext}":{"get":{"description":"Get the requested map tile.","operationId":"TileController_getTile","parameters":[{"name":"id","required":true,"in":"path","description":"Tile Source ID","schema":{"example":"tile-source-id","type":"string"}},{"name":"x","required":true,"in":"path","description":"X coordinate","schema":{"example":"x","type":"number"}},{"name":"y","required":true,"in":"path","description":"Y coordinate","schema":{"example":"y","type":"number"}},{"name":"z","required":true,"in":"path","description":"Z coordinate","schema":{"example":"z","type":"number"}},{"name":"ext","required":true,"in":"path","description":"Tile extension","schema":{"example":"ext","type":"string"}},{"name":"explain","required":true,"in":"query","description":"Explain tile query","schema":{"example":"false","type":"boolean"}}],"responses":{"200":{"description":"Requested map tile","content":{"application/x-protobuf":{"schema":{"type":"binary"}},"application/json":{"schema":{"type":"binary"}},"image/png":{"schema":{"type":"binary"}},"image/jpeg":{"schema":{"type":"binary"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get map tile","tags":["Map Endpoints"],"x-access":"execute"}},"/tiles/{id}/index.json":{"get":{"description":"Get the TileJSON specification for the specified Tile Source.","operationId":"TileController_getTileJson","parameters":[{"name":"id","required":true,"in":"path","description":"Tile Source ID","schema":{"example":"tile-source-id","type":"string"}}],"responses":{"200":{"description":"Requested TileJSON specification","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Tile Source TileJSON","tags":["Map Endpoints"],"x-access":"execute"}},"/tiles/{id}/style.json":{"get":{"description":"Retrieves a preview map style for the specified Tile Source.","operationId":"TileController_getPreview","parameters":[{"name":"id","required":true,"in":"path","description":"Tile Source ID","schema":{"example":"tile-source-id","type":"string"}}],"responses":{"200":{"description":"MapboxGL style specification","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get preview map style","tags":["Map Endpoints"],"x-access":"execute"}},"/api/v1/tilesources/drivers":{"get":{"description":"Returns a list of available tile drivers.","operationId":"TileSourceController_getDrivers","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get drivers","tags":["Map Tile Sources"],"x-access":"execute"}},"/api/v1/tilesources":{"get":{"description":"Retrieve an array of TileSources. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved TileSources by field values.\n- Sort retrieved TileSources by field values.\n- Join related resources.\n- Limit the number of TileSources retrieved.\n- Offset the TileSources retrieved.","operationId":"TileSourceController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get TileSources response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TileSource"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get TileSources","tags":["Map Tile Sources"],"x-access":"read"},"post":{"description":"Create a new TileSource.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"TileSourceController_createOne","parameters":[],"responses":{"201":{"description":"Create TileSource response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TileSource"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create TileSource","tags":["Map Tile Sources"],"x-access":"write"}},"/api/v1/tilesources/{id}":{"get":{"description":"Retrieve the specified TileSource. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"TileSourceController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"TileSource ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get TileSource response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TileSource"}}}},"401":{"description":"Unauthorized"},"404":{"description":"TileSource not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get TileSource","tags":["Map Tile Sources"],"x-access":"read"},"put":{"description":"Update the specified TileSource using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"TileSourceController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"TileSource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update TileSource response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TileSource"}}}},"401":{"description":"Unauthorized"},"404":{"description":"TileSource not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update TileSource","tags":["Map Tile Sources"],"x-access":"write"},"delete":{"description":"Delete the specified TileSource.","operationId":"TileSourceController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"TileSource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete TileSource response"},"401":{"description":"Unauthorized"},"404":{"description":"TileSource not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete TileSource","tags":["Map Tile Sources"],"x-access":"write"}},"/api/v1/tilesources/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"TileSourceController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Map Tile Sources"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"TileSourceController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Map Tile Sources"]}},"/api/v1/tilesources/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"TileSourceController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Map Tile Sources"]},"put":{"description":"Set resource metadata by key.","operationId":"TileSourceController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Map Tile Sources"]},"delete":{"description":"Delete resource metadata by key.","operationId":"TileSourceController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Map Tile Sources"]}},"/api/v1/uploads":{"get":{"description":"Retrieve an array of Uploads. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Uploads by field values.\n- Sort retrieved Uploads by field values.\n- Join related resources.\n- Limit the number of Uploads retrieved.\n- Offset the Uploads retrieved.","operationId":"UploadController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Uploads response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Upload"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Uploads","tags":["Data Upload"],"x-access":"read"},"post":{"description":"Upload a geospatial data file. For supported formats see here.\n\n  A response will be sent when the file has been uploaded but before\n  it has been processed. Use the returned upload ID to track progress by calling the [Get Upload](#get-upload) operation.\n    ","operationId":"UploadController_uploadFile","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadDto"}},"application/json":{"schema":{"$ref":"#/components/schemas/UploadDto"}}}},"responses":{"201":{"description":"Data Upload response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Upload"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Upload data file","tags":["Data Upload"],"x-access":"execute"}},"/api/v1/uploads/{id}":{"get":{"description":"Retrieve the specified Upload. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"UploadController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"Upload ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get Upload response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Upload"}}}},"401":{"description":"Unauthorized"},"404":{"description":"Upload not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Upload","tags":["Data Upload"],"x-access":"read"}},"/api/v1/auth/users/me":{"get":{"description":"Returns the User associated with the supplied Authorization bearer token.","operationId":"UserController_currentUser","parameters":[{"name":"Authentication","in":"header","description":"Authorization bearer token","required":true,"schema":{"type":"string","example":"Bearer <jwt token>"}}],"responses":{"200":{"description":"Current User response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get current User","tags":["Users"],"x-access":"execute"}},"/api/v1/auth/users":{"get":{"description":"Retrieve an array of Users. Specify query parameters to:\n\n- Select fields to retrieve.\n- Filter retrieved Users by field values.\n- Sort retrieved Users by field values.\n- Join related resources.\n- Limit the number of Users retrieved.\n- Offset the Users retrieved.","operationId":"UserController_getMany","parameters":[{"name":"fields","required":false,"in":"query","description":"Select resource fields","explode":true,"schema":{}},{"name":"filter","required":false,"in":"query","description":"Filter by resource fields","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"sort","required":false,"in":"query","description":"Sort by field, e.g. `-updatedAt`","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}},{"name":"limit","required":false,"in":"query","description":"Limit number of resources","schema":{}},{"name":"offset","required":false,"in":"query","description":"Offset resources","schema":{}}],"responses":{"200":{"description":"Get Users response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get Users","tags":["Users"],"x-access":"read"},"post":{"description":"Create a new User.\n\nNote that `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"UserController_createOne","parameters":[],"responses":{"201":{"description":"Create User response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Unauthorized"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Create User","tags":["Users"],"x-access":"write"}},"/api/v1/auth/users/{id}":{"get":{"description":"Retrieve the specified User. Specify query parameters to:\n\n- Select fields to retrieve.\n- Join related resources.","operationId":"UserController_getOne","parameters":[{"name":"id","required":true,"in":"path","description":"User ID","schema":{"type":"string"}},{"name":"fields","required":false,"in":"query","description":"Select resource fields","schema":{}},{"name":"join","required":false,"in":"query","description":"Join related resources","schema":{}}],"responses":{"200":{"description":"Get User response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Unauthorized"},"404":{"description":"User not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get User","tags":["Users"],"x-access":"read"},"put":{"description":"Update the specified User using the body of the request (full replacement, not a partial update).\n\nNote that `id`, `applicationId`, `createdAt` and `updatedAt` are set automatically and will be overwritten if supplied.","operationId":"UserController_replaceOne","parameters":[{"name":"id","required":true,"in":"path","description":"User ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Update User response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Unauthorized"},"404":{"description":"User not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update User","tags":["Users"],"x-access":"write"},"delete":{"description":"Delete the specified User.","operationId":"UserController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","description":"User ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete User response"},"401":{"description":"Unauthorized"},"404":{"description":"User not found"}},"security":[{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete User","tags":["Users"],"x-access":"write"}},"/api/v1/auth/users/{id}/metadata":{"get":{"description":"Get the complete metadata object for a resource.","operationId":"UserController_getMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata","tags":["Users"]},"put":{"description":"Update metadata object for a resource. Supplied object is merged with existing metadata.","operationId":"UserController_updateMetadata","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Update metadata","tags":["Users"]}},"/api/v1/auth/users/{id}/metadata/{key}":{"get":{"description":"Get resource metadata by key.","operationId":"UserController_getMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata by key response","content":{"application/json":{"schema":{"type":"object","example":{"prop1":{},"prop2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Get metadata by key","tags":["Users"]},"put":{"description":"Set resource metadata by key.","operationId":"UserController_setMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Metadata value","content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Set metadata by key","tags":["Users"]},"delete":{"description":"Delete resource metadata by key.","operationId":"UserController_deleteMetadataKey","parameters":[{"name":"id","required":true,"in":"path","description":"Resource ID","schema":{"type":"string"}},{"name":"key","required":true,"in":"path","description":"Metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"Resource metadata response","content":{"application/json":{"schema":{"type":"object","example":{"key1":{},"key2":{}}}}}}},"security":[{"headerApiKey":[]},{"queryApiKey":[]},{"headerApiKey":[]},{"queryApiKey":[]}],"summary":"Delete metadata by key","tags":["Users"]}},"/api/v1/auth/rabbitmq/user":{"post":{"operationId":"RabbitMQAuthController_authUser","parameters":[],"responses":{"201":{"description":""}},"tags":["RabbitMQAuth"]}},"/api/v1/auth/rabbitmq/vhost":{"post":{"operationId":"RabbitMQAuthController_authVhost","parameters":[],"responses":{"201":{"description":""}},"tags":["RabbitMQAuth"]}},"/api/v1/auth/rabbitmq/resource":{"post":{"operationId":"RabbitMQAuthController_authResource","parameters":[],"responses":{"201":{"description":""}},"tags":["RabbitMQAuth"]}},"/api/v1/auth/rabbitmq/topic":{"post":{"operationId":"RabbitMQAuthController_authTopic","parameters":[],"responses":{"201":{"description":""}},"tags":["RabbitMQAuth"]}}},"info":{"title":"Flo.w REST API","description":"\n\nFlo.w Engine exposes its services through a REST API. Standard CRUD (create/read/update/delete) operations\nare provided for the following resources:\n\n- [API Keys](#api-keys)\n- [Applications](#applications)\n- [Application Configuration](#application-configuration)\n- [Datasets](#datasets)\n- [Databases](#databases)\n- [Map Styles](#map-styles)\n- [Map Tile Sources](#map-tile-sources)\n- [Users](#users)\n\nAdditional operations are provided for:\n\n- [Querying Datasets](#query-dataset-simple)\n- [User-based authentication](#authentication)\n- [Server configuration](#server-configuration)\n- [Server health-check](#healthcheck)\n\nMap Server [endpoints](#map-endpoints) are also provided for use by map visualizations:\n\n- Base map styles\n- Map tiles\n- Map fonts\n- Map sprites\n","version":"v2.3.2","contact":{}},"tags":[{"name":"Server Configuration","description":"\nUse the Flo.w Engine configuration endpoint to retrieve global server configuration and version\ninformation.\n"},{"name":"Healthcheck","description":"\nUse the Healthcheck endpoint to check Flo.w Engine server health.\n"},{"name":"API Keys","description":"\nAPI keys provide authenticated access to the Flo.w Engine REST API and must be supplied with most REST\nrequests. See [Authenticating REST Requests](#authenticating-rest-requests) for details of how to specify\nan API key when making a request.\n\n::: warning API keys are immutable\nAPI keys cannot be modified once created. A new API key must be generated to modify access permissions.\n:::\n\nAPI keys provide different levels of access depending on their `type` property:\n\n- `master` keys: Can access resources owned by any Flo.w application. Master keys are generally only\navailable to system administrators and are used to create, modify and delete Flo.w applications.\n- `app` keys: Can access resources owned by a single Flo.w application. App keys are used by Flo.w application\ndevelopers and systems that integrate with Flo.w Engine (for example, front-end web applications).\n- `user` keys: Can access resources owned by a specified Flo.w user (not currently used).\n\nIn addition to the broad levels of access described above, each API key also specifies an access control list (ACL)\nin its `permissions` property that provides finer grained access to classes of resources and the type of access granted\n(read, write and/or execute).\n\nAccess can be granted to the following resource classes:\n\n- `auth`: Authentication operations (log in, log out, change password etc.)\n- `apikeys`: [API key](#api-keys) CRUD operations.\n- `appconfig`: [Application Config](#application-configuration) CRUD operations.\n- `applications`: [Application](#applications) CRUD operations.\n- `users`: [User](#users) CRUD operations.\n- `databases`: [Database](#databases) CRUD operations.\n- `datasets`: [Dataset](#datasets) CRUD and query operations.\n- `uploads`: [Data Upload](#data-upload) CRUD and data ingest operations.\n- `tiles`: [Tile Source](#map-tile-sources) CRUD and Map Server operations.\n- `styles`: [Map Style](#map-styles) CRUD and Map Server operations.\n\nAccess levels:\n- `read`: CRUD get and getMany operations.\n- `write`: CRUD create, update and delete operations.\n- `execute`: Resource-specific 'extra' operations. For example, dataset querying or authentication operations.\n"},{"name":"Applications","description":"\nAn Application is a logical container for other Flo.w Engine resources and provides multi-tenancy capability.\nA separate Application is generally created for each front-end web visualization.\n\nREST requests are restricted to accessing resources 'owned' by the Application associated with the supplied API key.\nOnly master API keys can access any resource and create, modify or delete Applications.\n"},{"name":"Application Configuration","description":"\nUse Application Configuration to store arbitrary application-specific configuration JSON.\nThe configuration can be retrieved or modified by front-end applications using the operations below.\n\n::: tip\nTo prevent modification of the configuration from a front-end application, supply an API key that only has `execute`\naccess for the `appconfig` resource type and use the [Get Current AppConfig](#get-current-appconfig) endpoint.\n:::\n"},{"name":"Data Upload","description":"\nData upload operations provide the ability to upload geospatial data and monitor upload progress.\n\nUploading data creates a new [Dataset](#datasets) and associated TileSource for serving the data as vector map tiles.\n"},{"name":"Datasets","description":"\nDatasets are abstractions of geospatial and non-geospatial data that can be queried or exposed as vector map tiles.\nA dataset is typically stored as a Postgres/PostGIS database table but drivers are provided for alternative\nbacking storage.\n\nDatasets can be created directly using the [Create Dataset](#create-dataset) operation or by uploading data using the\n[Upload File](#upload-file) operation.\n\nDataset types:\n\n- `table`: A table-backed Dataset. `source` is set to a database table name.\n- `sql`: A SQL-backed Dataset analogous to a database view. `source` is set to a SQL query.\n- `rest`: A Dataset backed by a third-party REST request. `source` is set to a URL.\n- `lambda`: A Dataset backed by an AWS Lambda function. `source` is set to an AWS Lambda ARN.\n\nDatasets can be queried using a simplified syntax (GET request) or a rich syntax (POST request) that\nsupports complex filtering, grouping and ordering operations. Query output can be formatted as JSON, GeoJSON or CSV.\n"},{"name":"Databases","description":"\nA Database resource specifies a driver and connection details for connecting to an external database.\nDatabases are associated with [Datasets](#datasets) to specify how and where the underlying data for the [Dataset](#datasets) is stored.\n\nEach Flo.w [Application](#applications) will typically contain a single Database, which provides connection details to an\napplication-specific physical database. However, an [Application](#applications) can also be associated with multiple databases.\nIn this case, each [Dataset](#datasets) may specify which Database to use for backing storage -\nthe `default` Database will be used if not specified.\n"},{"name":"Map Styles","description":"\nA Map Style is used by the Map Server to provide base maps for visualizations.\n\nDuring creation of a new [Application](#applications), a copy of one of the standard base map styles will typically be made:\n\n- 'positron': a simple light base map showing place names and transport.\n- 'darkmatter': a simple dark base map showing place names and transport.\n- 'fjord': a simple blue base map showing place names and transport.\n- 'osm-bright': a detailed base map showing land use and points of interest.\n\nSupport is provided for alternative style formats. Currently, a single format is supported:\n\n- `plain`: the `style` property contains a [MapboxGL style specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/).\n"},{"name":"Map Tile Sources","description":"\nMap Tile Sources are used by the Map Server and specify available vector map tiles.\n\nTwo types of Tile Source are supported:\n\n- 'dataset': Tile data is provided from a Flo.w [Dataset](#datasets). The `source` property specifies the Dataset ID.\n- 'tilelive': Tile data is provided from a [TileLive](https://github.com/mapbox/tilelive) source. The `source` property specifies the TileLive URI. This type\nof Tile Source is typically used to expose [mbtiles](https://docs.mapbox.com/help/glossary/mbtiles/) files as vector map tiles.\n"},{"name":"Users","description":"\nThe User resource together with [Authentication](#authentication) endpoints provide user management\nand authentication services required by many front-end applications.\n\nNote that the primary mechanism for authentication with Flo.w Engine is by API key. The use of Users and the Authentication\nendpoints is optional and provided as a service to applications if user-based authentication is required.\n"},{"name":"Authentication","description":"\nAuthentication endpoints together with the [User](#users) resource provide user management\nand authentication services required by many front-end applications.\n\nNote that the primary mechanism for authentication with Flo.w Engine is by API key. The use of Users and the Authentication\nendpoints is optional and provided as a service to applications if user-based authentication is required.\n"},{"name":"Map Endpoints","description":"\n::: warning\nMap endpoints are designed to be consumed by a front-end map visualization and are not designed to be called directly from\na front-end application or service.\n:::\n\nMap Server endpoints provide:\n\n- Base map styles\n- Vector map tiles\n- Map fonts\n- Map sprites\n"}],"servers":[{"url":"https://flow.emu-analytics.net","description":"Flo.w Production Server"},{"url":"http://localhost:3000","description":"Localhost Server on port 3000"}],"components":{"securitySchemes":{"headerApiKey":{"type":"apiKey","in":"header","name":"x-flow-api-key","description":"Specify a Flo.w API key as a request header."},"queryApiKey":{"type":"apiKey","in":"query","name":"api-key","description":"Specify a Flo.w API key as a query parameter."}},"schemas":{"AgentInvokeDto":{"type":"object","properties":{"input":{"type":"string","description":"Text to send to the agent"},"thread":{"type":"string","description":"Opaque conversation handle, forwarded to the agent and honoured whenever it is sent. Whether it does anything depends on the agent having been built with a Mastra `Memory`, not on its declared `mode` - `mode` describes the agent, it does not restrict this field."},"context":{"type":"object","description":"Free-form context forwarded to the agent verbatim and interpreted by it."}},"required":["input"]},"AgentInvokeResponse":{"type":"object","properties":{"invocationId":{"type":"string","description":"Server-minted id for this invocation, for correlation with logs"},"output":{"type":"string","description":"The text the agent produced. May be partial - judge completeness from `finishReason`."},"finishReason":{"type":"object","description":"Why generation stopped, passed through from the model layer un-normalised (e.g. `stop`, `length`, `tool-calls`, `content-filter`, `error`)."},"model":{"type":"string","description":"Model the agent used"},"usage":{"type":"object","description":"What the invocation cost, accumulated across every model call the agent made - including any it delegated to sub-agents. `inputTokens` and `outputTokens` are the totals; `inputDetails` breaks the input down by tier (`text`, `cacheRead`, `cacheWrite`), which is what a token is priced from. Absent when the agent reported no usage at all."},"durationMs":{"type":"number","description":"End-to-end time the client waited, in milliseconds - measured from handler entry, not the model call."}},"required":["invocationId","output","durationMs"]},"AgentStreamStartEvent":{"type":"object","properties":{"invocationId":{"type":"string","description":"Server-minted id for this invocation, for correlation with logs"}},"required":["invocationId"]},"AgentStreamDeltaEvent":{"type":"object","properties":{"text":{"type":"string","description":"Text to append to the answer so far"}},"required":["text"]},"AgentStreamDoneEvent":{"type":"object","properties":{"finishReason":{"type":"object","description":"Why generation stopped, passed through un-normalised"},"model":{"type":"string","description":"Model the agent used"},"usage":{"type":"object","description":"What the invocation cost, accumulated across every model call the agent made - including any it delegated to sub-agents. `inputTokens` and `outputTokens` are the totals; `inputDetails` breaks the input down by tier (`text`, `cacheRead`, `cacheWrite`), which is what a token is priced from. Absent when the agent reported no usage at all."},"durationMs":{"type":"number","description":"End-to-end time in milliseconds, measured from handler entry"}},"required":["durationMs"]},"AgentStreamErrorEvent":{"type":"object","properties":{"code":{"type":"string","description":"One of `provider_error`, `agent_error`, `agent_gone`, `timeout`. `busy` and `invalid_input` are pre-`start` only and arrive as HTTP statuses instead."},"message":{"type":"string","description":"Human-readable detail; never parse this"},"usage":{"type":"object","description":"Usage up to the failure, passed through from the provider verbatim rather than in the accumulated shape above. Best-effort and usually absent: an invocation that failed or was abandoned burns tokens that are reported by nothing else, and nothing bills them."}},"required":["code","message"]},"Database":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"id":{"type":"string","description":"Resource ID"},"type":{"type":"string","description":"Database type"},"name":{"type":"string","description":"Database name"},"description":{"type":"string","description":"Database description"},"host":{"type":"string","description":"Database connection: host address"},"port":{"type":"number","description":"Database connection: port number"},"user":{"type":"string","description":"Database connection: user"},"password":{"type":"string","writeOnly":true,"description":"Database connection: password"},"db":{"type":"string","description":"Database connection: database name"},"default":{"type":"boolean","description":"Default Database for Application"},"application":{"readOnly":true,"description":"Related Application resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"applicationId":{"type":"string","readOnly":true,"description":"Related Application ID"}},"required":["createdAt","updatedAt","metadata","id","type","name","description","host","port","user","password","db","default","applicationId"]},"Application":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"id":{"type":"string","description":"Resource ID"},"name":{"type":"string","description":"Application name"},"description":{"type":"string","description":"Application description"},"contact":{"type":"string","description":"Contact email"},"databases":{"readOnly":true,"description":"Related Database resources (specify `join` to load)","type":"array","items":{"$ref":"#/components/schemas/Database"}}},"required":["createdAt","updatedAt","metadata","id","name","description","contact"]},"Agent":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","description":"Related Application ID"},"id":{"type":"string","description":"Resource ID"},"environment":{"type":"string","description":"Environment"},"description":{"type":"string","description":"Agent description"},"version":{"type":"string","description":"Agent package version"},"capabilities":{"type":"object","description":"Agent-declared capability hints"},"startedAt":{"format":"date-time","type":"string","description":"Agent process start timestamp (registration, engine clock)"},"heartbeatAt":{"format":"date-time","type":"string","description":"Last heartbeat received timestamp"},"application":{"readOnly":true,"description":"Related Application resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]}},"required":["createdAt","updatedAt","metadata","applicationId","id","environment","description","version","capabilities","startedAt","heartbeatAt"]},"User":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"applicationId":{"type":"string","readOnly":true,"description":"Application ID"},"metadata":{"type":"object","description":"Resource metadata"},"id":{"type":"string","description":"Resource ID"},"email":{"type":"string","description":"User email address"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"password":{"type":"string","writeOnly":true,"description":"User password"},"roles":{"description":"Application-specific roles","type":"array","items":{"type":"string"}},"emailVerified":{"type":"boolean","description":"User email is verified"},"enabled":{"type":"boolean","description":"User is enabled"},"verificationToken":{"type":"string","readOnly":true,"description":"User email verification token"},"passwordResetToken":{"type":"string","readOnly":true,"description":"User password reset token"}},"required":["createdAt","updatedAt","applicationId","metadata","id","email","firstName","lastName","password","roles","emailVerified","enabled","verificationToken","passwordResetToken"]},"ApiKey":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"applicationId":{"type":"string","readOnly":true,"description":"Application ID"},"metadata":{"type":"object","description":"Resource metadata"},"id":{"type":"string","description":"Resource ID"},"description":{"type":"string","description":"Description"},"type":{"type":"string","description":"API key type","enum":["master","app","user"]},"permissions":{"type":"object","description":"Permission ACLs"},"user":{"readOnly":true,"description":"Related User resource (user-type keys only)","allOf":[{"$ref":"#/components/schemas/User"}]},"userId":{"type":"number","description":"Related User ID (user-type keys only)"}},"required":["createdAt","updatedAt","applicationId","metadata","id","description","type","permissions"]},"LoginDto":{"type":"object","properties":{"email":{"type":"string","description":"User email address"},"password":{"type":"string","description":"Supplied password"},"applicationId":{"type":"string","description":"Application ID"}},"required":["email","password","applicationId"]},"AuthLoginResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"JWT bearer token"},"refreshToken":{"type":"string","description":"Opaque refresh token"}},"required":["accessToken","refreshToken"]},"ChangePasswordDto":{"type":"object","properties":{"password":{"type":"string","description":"Current password"},"newPassword":{"type":"string","description":"New password"}},"required":["password","newPassword"]},"SignupDto":{"type":"object","properties":{"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address"},"password":{"type":"string","description":"User password"},"applicationId":{"type":"string","description":"Application ID"},"confirmUrl":{"type":"string","description":"Confirmation URL (supplied in confirmation email)"},"redirectUrl":{"type":"string","description":"Redirect URL (on successful confirmation)"}},"required":["firstName","lastName","email","password","applicationId","confirmUrl","redirectUrl"]},"RequestPasswordResetDto":{"type":"object","properties":{"email":{"type":"string","description":"User email address"},"applicationId":{"type":"string","description":"Application ID"},"redirectUrl":{"type":"string","description":"Redirect URL"}},"required":["email","applicationId","redirectUrl"]},"ResetPasswordDto":{"type":"object","properties":{"email":{"type":"string","description":"User email address"},"password":{"type":"string","description":"New password"},"applicationId":{"type":"string","description":"Application ID"},"token":{"type":"string","description":"Password reset token"}},"required":["email","password","applicationId","token"]},"ConfigDto":{"type":"object","properties":{"version":{"type":"object","description":"Server version","properties":{"tag":{"type":"string","description":"Version tag"},"hash":{"type":"string","description":"Build hash"},"timestamp":{"type":"number","description":"Build timestamp"}}}},"required":["version"]},"ContactPointSendRequestDto":{"type":"object","properties":{"template":{"type":"string","description":"Template to use for the notification. If not specified, the default template configured for the contact point will be used.","default":null},"subject":{"type":"string","description":"Subject to use for the notification. The subject can include template variables that will be populated with the data provided in the `data` field of the request body. If not specified, the default subject configured for the contact point will be used.","default":null},"recipients":{"description":"List of recipients for the notification. If not specified, the default recipients configured for the contact point will be used.","default":[],"type":"array","items":{"type":"string"}},"data":{"type":"object","description":"Data to apply to the notification template. This is used to populate template variables.","default":{}}}},"ContactPoint":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","readOnly":true,"description":"Related Application ID"},"id":{"type":"string","description":"Contact Point ID"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"type":{"type":"string","description":"Contact Point  type"},"description":{"type":"string","description":"Contact Point description"},"templates":{"description":"Notification templates","type":"array","items":{"type":"string"}},"recipients":{"description":"Contact Point recipients","type":"array","items":{"type":"string"}},"host":{"type":"string","description":"Contact Point connection: host address"},"port":{"type":"number","description":"Contact Point connection: port number"},"user":{"type":"string","description":"Contact Point connection: user"},"password":{"type":"string","writeOnly":true,"description":"Contact Point : password"}},"required":["createdAt","updatedAt","metadata","applicationId","id","type","description","templates","recipients","host","port","user","password"]},"AttributeDto":{"type":"object","properties":{"attribute":{"type":"string","description":"Attribute ID"},"type":{"type":"string","description":"Attribute type"},"dbType":{"type":"string","description":"Native database type"},"primaryKey":{"type":"boolean","description":"Attribute is primary key"},"default":{"type":"string","description":"Default value"},"nullable":{"type":"boolean","description":"Attribute can be null"},"description":{"type":"boolean","description":"Attribute description"},"isGeometry":{"type":"boolean","description":"Attribute is a geometry type"},"extent":{"type":"array","items":{"type":"number"},"maxItems":4,"minItems":4,"description":"Extent in original SRS","example":[-180,-90,180,90]},"extentLngLat":{"type":"array","items":{"type":"number"},"maxItems":4,"minItems":4,"description":"Extent in WSG84","example":[-180,-90,180,90]}},"required":["attribute","type","dbType","primaryKey","default","nullable","description"]},"Dataset":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"owner":{"readOnly":true,"description":"Related User (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/User"}]},"ownerId":{"type":"string","description":"User ID"},"applicationId":{"type":"string","readOnly":true,"description":"Related Application ID"},"id":{"type":"string","description":"Dataset ID"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"type":{"type":"string","description":"Dataset type - table or SQL","enum":["table","sql"]},"source":{"type":"string","description":"Source table name or SQL"},"name":{"type":"string","description":"Dataset name"},"description":{"type":"string","description":"Dataset description"},"attributes":{"description":"Dataset attributes (autodetected)","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/AttributeDto"}},"bytes":{"type":"number","description":"Dataset size (only applicable to `table` type)","readOnly":true},"databaseId":{"type":"string","description":"Database ID"},"database":{"readOnly":true,"description":"Related Database (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Database"}]}},"required":["createdAt","updatedAt","metadata","applicationId","id","type","source","name","description","databaseId"]},"SimpleQueryDto":{"type":"object","properties":{"format":{"type":"string","description":"Response format","enum":["json","geojson","csv"],"default":"json","example":"json"},"explain":{"type":"object","description":"Explain query","default":false},"attributes":{"description":"Select attributes to return","explode":true,"style":"form","type":"array","items":{"type":"string"}},"filter":{"type":"object","description":"Filter results","additionalProperties":true,"explode":true,"style":"deepObject"},"sort":{"description":"Sort by attributes","explode":true,"style":"form","type":"array","items":{"type":"string"}},"limit":{"type":"number","description":"Limit number of results","example":10},"offset":{"type":"number","description":"Offset results","example":0},"filename":{"type":"string","description":"Specify download file name\n\nAdds a `Content-Disposition: attachment; filename=\"<filename>\"` header to the response.\nThis hints that the response should be downloaded when the request is issued from a browser.\n  "}}},"Object":{"type":"object","properties":{}},"SamplingOptionsDto":{"type":"object","properties":{"percentage":{"type":"number","description":"Sampling percentage"},"method":{"type":"string","description":"Sampling method"},"seed":{"type":"number","description":"Random seed"}},"required":["percentage"]},"AdvancedQueryBodyDto":{"type":"object","properties":{"attributes":{"description":"Select attributes to return","explode":true,"style":"form","type":"array","items":{"type":"string"}},"where":{"type":"object","description":"Filter results","additionalProperties":true,"explode":true,"style":"deepObject"},"order":{"description":"Sort by attributes","explode":true,"style":"form","type":"array","items":{"type":"string"}},"group":{"description":"Group by attributes","explode":true,"style":"form","type":"array","items":{"type":"string"}},"sample":{"description":"Table sampling options","allOf":[{"$ref":"#/components/schemas/SamplingOptionsDto"}]},"limit":{"type":"number","description":"Limit number of results"},"offset":{"type":"number","description":"Offset results"},"distinct":{"description":"Select DISTINCT ON attributes","explode":true,"style":"form","type":"array","items":{"type":"string"}}}},"Job":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"applicationId":{"type":"string","readOnly":true,"description":"Application ID"},"metadata":{"type":"object","description":"Resource metadata"},"owner":{"readOnly":true,"description":"Related User (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/User"}]},"ownerId":{"type":"string","description":"User ID"},"id":{"type":"string","description":"Resource ID"},"type":{"type":"string","description":"Job type identifier (application-specific)"},"name":{"type":"string","description":"Job name"},"description":{"type":"string","description":"Job description"},"params":{"type":"object","description":"Job parameters"},"status":{"type":"string","description":"Job status"},"error":{"type":"object","description":"Job error information"},"progress":{"type":"number","description":"Job progress (0-1)"},"progressText":{"type":"string","description":"Progress display text (e.g. processing stage)"},"datasetId":{"type":"string","description":"Associated results dataset"}},"required":["createdAt","updatedAt","applicationId","metadata","id","type","name","description","params","status","progress"]},"JobSubmitDto":{"type":"object","properties":{"type":{"type":"string","description":"Job type"},"name":{"type":"string","description":"Job name"},"description":{"type":"string","description":"Job description"},"params":{"type":"object","description":"Job parameters","additionalProperties":true,"explode":true,"style":"deepObject"}},"required":["type","name","description","params"]},"JobStatusDto":{"type":"object","properties":{"status":{"type":"string","description":"Job status"},"progress":{"type":"number","description":"Job progress (0-1)"},"progressText":{"type":"string","description":"Job progress text"},"error":{"type":"object","description":"Job error information"}},"required":["status","progress","progressText","error"]},"JobRequestDto":{"type":"object","properties":{"type":{"type":"string","description":"Job type"}},"required":["type"]},"MapLayer":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"owner":{"readOnly":true,"description":"Related User (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/User"}]},"ownerId":{"type":"string","description":"User ID"},"applicationId":{"type":"string","readOnly":true,"description":"Related Application ID"},"id":{"type":"string","description":"Map layer ID"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"name":{"type":"string","description":"Map layer name"},"description":{"type":"string","description":"Map layer description"},"type":{"type":"string","description":"App-specific map layer type"},"group":{"type":"string","description":"App-specific map layer group"},"layerSpec":{"type":"object","description":"Application configuration"}},"required":["createdAt","updatedAt","metadata","applicationId","id","name","description","type","group","layerSpec"]},"MediaUploadDto":{"type":"object","properties":{"file":{"type":"file","description":"The file to upload"},"id":{"type":"string","description":"Media ID"},"type":{"type":"string","description":"Media type"},"mimeType":{"type":"string","description":"Media MIME type - determined automatically if not provided"},"metadata":{"type":"object","description":"Metadata to associate with media (JSON)","default":"{}"}},"required":["file"]},"Buffer":{"type":"object","properties":{}},"Media":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","readOnly":true,"description":"Related Application ID"},"id":{"type":"string","description":"Media ID"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"fileName":{"type":"string","description":"Original file name of content"},"type":{"type":"string","description":"Media type"},"mimeType":{"type":"string","description":"MIME type"},"content":{"description":"Media binary content","allOf":[{"$ref":"#/components/schemas/Buffer"}]}},"required":["createdAt","updatedAt","metadata","applicationId","id","fileName","type","mimeType","content"]},"Pipeline":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","description":"Related Application ID"},"id":{"type":"string","description":"Resource ID"},"environment":{"type":"string","description":"Environment"},"description":{"type":"string","description":"Style description"},"config":{"type":"object","description":"Pipeline configuration"},"startedAt":{"format":"date-time","type":"string","description":"Pipeline start timestamp"},"heartbeatAt":{"format":"date-time","type":"string","description":"Last heartbeat received timestamp"},"application":{"readOnly":true,"description":"Related Application resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"components":{"readOnly":true,"description":"Related Pipeline Component resources (specify `join` to load)","type":"array","items":{"$ref":"#/components/schemas/PipelineComponent"}}},"required":["createdAt","updatedAt","metadata","applicationId","id","environment","description","config","startedAt","heartbeatAt"]},"PipelineMetric":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"id":{"type":"string","description":"Unique metric ID"},"applicationId":{"type":"string","description":"Related Application ID"},"pipelineId":{"type":"string","description":"Parent Pipeline ID"},"componentId":{"type":"string","description":"Pipeline Component ID"},"name":{"type":"string","description":"Metric name"},"type":{"type":"string","description":"Metric type"},"timestamp":{"format":"date-time","type":"string","description":"Metric timestamp"},"value":{"type":"string","description":"Metric value"},"labels":{"type":"object","description":"Extra metrics labels"},"pipelineComponent":{"readOnly":true,"description":"Parent pipeline component resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/PipelineComponent"}]}},"required":["createdAt","updatedAt","id","applicationId","pipelineId","componentId","name","type","timestamp","value","labels"]},"PipelineComponent":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","description":"Related Application ID"},"pipelineId":{"type":"string","description":"Parent Pipeline ID"},"id":{"type":"string","description":"Pipeline Component ID"},"class":{"type":"string","description":"Pipeline Component class (e.g. source, sink, cache"},"type":{"type":"string","description":"Pipeline Component type (e.g. SQSReadableSource, StrategyCache"},"description":{"type":"string","description":"Pipeline Component description"},"config":{"type":"object","description":"Pipeline component configuration"},"index":{"type":"number","description":"Index of component in pipeline"},"pipeline":{"readOnly":true,"description":"Parent Pipeline resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Pipeline"}]},"metrics":{"readOnly":true,"description":"Related Pipeline Metric resources (specify `join` to load)","type":"array","items":{"$ref":"#/components/schemas/PipelineMetric"}}},"required":["createdAt","updatedAt","metadata","applicationId","pipelineId","id","class","type","description","config","index"]},"Style":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","description":"Related Application ID"},"id":{"type":"string","description":"Resource ID"},"application":{"readOnly":true,"description":"Related Application resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"name":{"type":"string","description":"Style name"},"description":{"type":"string","description":"Style description"},"type":{"type":"string","description":"Style type. Currently only `plain` (MapboxGL style specification) is supported)","enum":["plain"]},"style":{"type":"object","description":"Style JSON definition"}},"required":["createdAt","updatedAt","metadata","applicationId","id","name","description","type","style"]},"TileSource":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"metadata":{"type":"object","description":"Resource metadata"},"applicationId":{"type":"string","readOnly":true,"description":"Related Application ID"},"id":{"type":"string","description":"Resource ID"},"application":{"readOnly":false,"description":"Related Application resource (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"type":{"type":"string","description":"Tile source type"},"source":{"type":"string","description":"Data source"},"attribution":{"type":"string","description":"Tile source attribution text"},"minZoom":{"type":"number","description":"Minimum zoom level"},"maxZoom":{"type":"number","description":"Maximum zoom level"},"extentLngLat":{"description":"Override tile source extent","minItems":4,"maxItems":4,"type":"array","items":{"type":"number"}},"headers":{"type":"object","description":"Tile source response headers"}},"required":["createdAt","updatedAt","metadata","applicationId","id","type","source","attribution","minZoom","maxZoom","extentLngLat","headers"]},"Upload":{"type":"object","properties":{"createdAt":{"format":"date-time","type":"string","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","readOnly":true,"description":"Last update timestamp"},"application":{"readOnly":true,"description":"Related Application (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/Application"}]},"applicationId":{"type":"string","readOnly":true,"description":"Application ID"},"owner":{"readOnly":true,"description":"Related User (specify `join` to load)","allOf":[{"$ref":"#/components/schemas/User"}]},"ownerId":{"type":"string","description":"User ID"},"id":{"type":"string","description":"Resource ID"},"fileName":{"type":"string","description":"Upload original filename"},"path":{"type":"string","description":"Temporary upload path"},"options":{"type":"object","description":"Upload options"},"status":{"type":"string","readOnly":true,"description":"Upload status"},"error":{"type":"object","readOnly":true,"description":"Upload error information"},"size":{"type":"number","readOnly":true,"description":"Upload size in bytes"}},"required":["createdAt","updatedAt","applicationId","id","fileName","path","options","status","error","size"]},"UploadDto":{"type":"object","properties":{"file":{"type":"file","description":"The file to upload"},"filePath":{"type":"string","description":"File path - required if file not uploaded with request"},"datasetId":{"type":"string","description":"Dataset ID"},"name":{"type":"string","description":"Dataset name"},"description":{"type":"string","description":"Dataset description"},"attribution":{"type":"string","description":"Tile source attribution text"},"sourceSrid":{"type":"number","description":"Source SRS ID"},"targetSrid":{"type":"number","description":"Target SRS ID"},"schema":{"type":"string","description":"Database schema"},"metadata":{"type":"object","description":"Metadata to associate with dataset","default":"{}"}},"required":["file"]}}}}