{ "openapi": "3.1.0", "info": { "title": "TetraScience Data and AI Cloud API", "version": "4.0", "description": "Programmatic access to the TetraScience Scientific Data and AI Platform \u2014 manage tenants, organizations, users, roles, agents, integrations, pipelines, files, datasets, schemas, and search across the Tetra Data Platform.", "contact": { "name": "TetraScience", "url": "https://www.tetrascience.com/" }, "license": { "name": "Proprietary" } }, "servers": [ { "url": "https://api.tetrascience.com", "description": "Production Server" }, { "url": "https://api.tetrascience-uat.com", "description": "User Acceptance Server" }, { "url": "https://api.tetrascience-dev.com", "description": "Development Server" }, { "url": "https://api.tetrascience-uat.com", "description": "User Acceptabce Server" }, { "url": "api.tetrascience.com" } ], "security": [ { "token": [], "orgSlug": [] }, { "orgSlug": [], "tsAuthToken": [] } ], "tags": [ { "name": "Access Groups" }, { "name": "Agents" }, { "name": "Audit Trail" }, { "name": "Commands" }, { "name": "Connectors" }, { "name": "Data Acquisition" }, { "name": "Data App Providers" }, { "name": "Data Apps" }, { "name": "Edit Subscriptions" }, { "name": "Embedded Data Apps" }, { "name": "Hubs" }, { "name": "IDS" }, { "name": "Linked Data Apps" }, { "name": "Login" }, { "name": "Organizations" }, { "name": "Pipelines" }, { "name": "Protocols" }, { "name": "Requests" }, { "name": "Roles" }, { "name": "Task Scripts" }, { "name": "Tenants" }, { "name": "Users" }, { "name": "View Subscriptions" }, { "name": "ai-workflows" }, { "name": "clusters" }, { "name": "connectors" }, { "name": "databricks" }, { "name": "lakehouse" }, { "name": "schemas" }, { "name": "tetraflows" }, { "name": "tetraspheres" } ], "paths": { "/v1/commands": { "post": { "summary": "Create command", "description": "Use this endpoint to create a new command for an on-premises connector/agent. It also automatically sends command to SQS queue for execution. Once it is in the queue, the connector/agent listening on the target queue picks up the command, tries to execute it, and sends the response back to the command service.\nThe maximum create command request size is 10 MB.", "tags": [ "Commands" ], "operationId": "ag-create-command", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "targetId", "action", "expiresAt", "payload" ], "properties": { "targetId": { "type": "string", "description": "Agent or Connector ID for which command should be created" }, "action": { "type": "string", "description": "Action label, such as `TetraScience.Connector.sdc.CreateMeasurementOrder`" }, "expiresAt": { "type": "string", "description": "Command expiration time (ISO timestamp). Must be at least 60 seconds from the current time.", "default": "2021-01-31T23:58:43.749Z" }, "metadata": { "type": "object", "description": "Metadata key-value pairs", "additionalProperties": true }, "payload": { "type": "object", "description": "Request body for the command", "additionalProperties": true }, "payloadDelivery": { "type": "string", "description": "The delivery method for the command payload. When \"embedded\" is specified the command body is included in the SQS message payload. When \"referenced\" is specified the command body is stored in S3 and only a reference to the S3 object is included in the SQS message payload. In case no value is passed and payload is small enough to be transferred over SQS \"embedded\" is used, otherwise \"referenced\" is used.", "enum": [ "embedded", "referenced" ] } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"id\": \"7992e5d6-15bf-4f5b-af06-47f3380ca75a\",\n \"orgSlug\": \"tetrascience\",\n \"targetId\": \"b143e7c5-90ae-4b69-895a-decf0b1dfb38\",\n \"action\": \"TetraScience.Connector.gdc.HttpRequest\",\n \"expiresAt\": \"2021-01-31T23:58:43.749Z\",\n \"metadata\": {},\n \"status\": \"PENDING\",\n \"requestBody\": {\n \"body\": {\n \"url\": \"https://sdc.test.com:9005/SDC/Smartreports/ExportedMeasurements\",\n \"body\": {\n \"raw\": \"{\\\"InterfaceId\\\":\\\"1\\\",\\\"LastInterfaceResultId\\\":\\\"0\\\"}\",\n \"mode\": \"raw\"\n },\n \"method\": \"POST\",\n \"headers\": [\n {\n \"Authorization\": \"Basic ...\"\n },\n {\n \"Content-Type\": \"application/json\"\n }\n ],\n \"ignore_tls_certificate\": true\n },\n \"action\": \"TetraScience.Connector.gdc.HttpRequest\",\n \"targetId\": \"b143e7c5-90ae-4b69-895a-decf0b1dfb38\",\n \"commandId\": \"7992e5d6-15bf-4f5b-af06-47f3380ca75a\",\n \"createdAt\": \"2021-01-20T10:25:02.807Z\",\n \"expiresAt\": \"2021-01-31T23:58:43.749Z\"\n },\n \"responseBody\": null,\n \"requestPayloadDelivery\": \"embedded\",\n \"createdByEntity\": \"user\",\n \"createdBy\": \"59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd\",\n \"createdAt\": \"2021-01-20T10:25:02.807Z\",\n \"updatedAt\": \"2021-01-20T10:25:02.872Z\"\n}" } }, "schema": { "type": "object", "properties": { "id": { "type": "string", "example": "7992e5d6-15bf-4f5b-af06-47f3380ca75a" }, "orgSlug": { "type": "string", "example": "tetrascience" }, "targetId": { "type": "string", "example": "b143e7c5-90ae-4b69-895a-decf0b1dfb38" }, "action": { "type": "string", "example": "TetraScience.Connector.gdc.HttpRequest" }, "expiresAt": { "type": "string", "example": "2021-01-31T23:58:43.749Z" }, "metadata": { "type": "object", "properties": {} }, "status": { "type": "string", "example": "PENDING" }, "requestBody": { "type": "object", "properties": { "body": { "type": "object", "properties": { "url": { "type": "string", "example": "https://sdc.test.com:9005/SDC/Smartreports/ExportedMeasurements" }, "body": { "type": "object", "properties": { "raw": { "type": "string", "example": "{\"InterfaceId\":\"1\",\"LastInterfaceResultId\":\"0\"}" }, "mode": { "type": "string", "example": "raw" } } }, "method": { "type": "string", "example": "POST" }, "headers": { "type": "array", "items": { "type": "object", "properties": { "Authorization": { "type": "string", "example": "Basic ..." } } } }, "ignore_tls_certificate": { "type": "boolean", "example": true, "default": true } } }, "action": { "type": "string", "example": "TetraScience.Connector.gdc.HttpRequest" }, "targetId": { "type": "string", "example": "b143e7c5-90ae-4b69-895a-decf0b1dfb38" }, "commandId": { "type": "string", "example": "7992e5d6-15bf-4f5b-af06-47f3380ca75a" }, "createdAt": { "type": "string", "example": "2021-01-20T10:25:02.807Z" }, "expiresAt": { "type": "string", "example": "2021-01-31T23:58:43.749Z" } } }, "responseBody": {}, "requestPayloadDelivery": { "type": "string", "enum": [ "embedded", "referenced" ], "example": "embedded" }, "createdByEntity": { "type": "string", "example": "user" }, "createdBy": { "type": "string", "example": "59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd" }, "createdAt": { "type": "string", "example": "2021-01-20T10:25:02.807Z" }, "updatedAt": { "type": "string", "example": "2021-01-20T10:25:02.872Z" } } } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{\n\t\t\"statusCode\": 400,\n \"error\": \"Bad request\",\n \"message\": \"Queue is purging and cannot accept new requests. Please try again later\"\n}" } }, "schema": { "oneOf": [ { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "default": 0 }, "error": { "type": "string", "example": "Bad request" }, "message": { "type": "string", "example": "Command request payload is larger than maximum size of 10 MB." } } }, { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "default": 0 }, "error": { "type": "string", "example": "Bad Request" }, "message": { "type": "string", "example": "Error validating metadata. Metadata must contain only string with ASCII characters." } } }, { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "default": 0 }, "error": { "type": "string", "example": "Bad request" }, "message": { "type": "string", "example": "Param expiresAt must be at least 60 seconds from current date timestamp" } } }, { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "default": 0 }, "error": { "type": "string", "example": "Bad request" }, "message": { "type": "string", "example": "Queue is purging and cannot accept new requests. Please try again later" } } } ] } } } }, "500": { "description": "500", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 500,\n \"error\": \"Internal Server Error\",\n \"message\": \"An internal server error occurred\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 500, "default": 0 }, "error": { "type": "string", "example": "Internal Server Error" }, "message": { "type": "string", "example": "An internal server error occurred" } } } } } } }, "deprecated": false }, "delete": { "summary": "Purge queue", "description": "Use this method to purge all existing commands from the target queue. This command can be useful when testing new pipelines and command creation and the queue is blocked by a large number of unexecuted commands. When you fire this endpoint, all commands are deleted from the queue, and the command status is changed to PURGED. Also, during the purge, the queue for the given target is blocked and does not receive new commands.", "tags": [ "Commands" ], "operationId": "ag-purge-queue", "parameters": [ { "name": "targetId", "in": "query", "description": "Agent or connector ID for which queue should be purged", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"purged\": [{\n \"commandId\": \"cd0ce1e2-c0f1-47c1-9da9-feaa10cfe7eb\"\n },{\n \"commandId\": \"39ead9af-2926-4800-9d11-a3895de495e8\"\n }]\n}" } }, "schema": { "type": "object", "properties": { "purged": { "type": "array", "items": { "type": "object", "properties": { "commandId": { "type": "string", "example": "cd0ce1e2-c0f1-47c1-9da9-feaa10cfe7eb" } } } } } } } } }, "400": { "description": "400", "content": { "application/json": { "examples": { "Result": { "value": "{\n \t\"statusCode\": 400,\n \"error\": \"Bad request\",\n \"message\": \"Queue is already purging. Please try later.\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "default": 0 }, "error": { "type": "string", "example": "Bad request" }, "message": { "type": "string", "example": "Queue is already purging. Please try later." } } } } } }, "500": { "description": "500", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 500,\n \"error\": \"Internal Server Error\",\n \"message\": \"An internal server error occurred\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 500, "default": 0 }, "error": { "type": "string", "example": "Internal Server Error" }, "message": { "type": "string", "example": "An internal server error occurred" } } } } } } }, "deprecated": false }, "get": { "summary": "Search commands", "description": "Use this endpoint to search all on-premises commands based on various filters. This endpoint is useful when you want to filter out commands, get all successful, or unsuccessful commands, get all commands that are sent to some agent/connector, commands that are created within a certain time range and more.", "tags": [ "Commands" ], "operationId": "ag-search-commands", "parameters": [ { "name": "targetId", "in": "query", "description": "ID of the target that received and processed command(s). Supports one or more values, such as `targetId=71003689-9619-43aa-809a-a693ede72e8b&targetId=740b1e83-eaf0-4e03-b134-97fb575a8c4c`", "schema": { "type": "string" } }, { "name": "action", "in": "query", "description": "Action label, such as TetraScience.Connector.sdc.CreateMeasurementOrder. Supports one or more values, such as `action=TetraScience.Connector.sdc.CreateMeasurementOrder&action=TetraScience.Connector.ValidateConfig`", "schema": { "type": "string" } }, { "name": "status", "in": "query", "description": "Command status: CREATED, UNSENT, PENDING, EXPIRED, PURGED, ERROR, PROCESSING, REJECTED, SUCCESS, FAILURE. Supports one or more values, such as `status=FAILURE&status=SUCCESS`", "schema": { "type": "string" } }, { "name": "fromDate", "in": "query", "description": "Deprecated name for `createdAtAfter`", "schema": { "type": "string" } }, { "name": "toDate", "in": "query", "description": "Deprecated name for `createdAtBefore`", "schema": { "type": "string" } }, { "name": "createdAtBefore", "in": "query", "description": "Commands created on or before a given date (ISO timestamp)", "schema": { "type": "string" } }, { "name": "createdAtAfter", "in": "query", "description": "Commands created on or after a given date (ISO timestamp)", "schema": { "type": "string" } }, { "name": "expiresAtBefore", "in": "query", "description": "Commands expiring on or before a given date (ISO timestamp)", "schema": { "type": "string" } }, { "name": "expiresAtAfter", "in": "query", "description": "Commands expiring on or after a given date (ISO timestamp)", "schema": { "type": "string" } }, { "name": "updatedAtBefore", "in": "query", "description": "Commands updated on or before a given date (ISO timestamp)", "schema": { "type": "string" } }, { "name": "updatedAtAfter", "in": "query", "description": "Commands updated on or after a given date (ISO timestamp)", "schema": { "type": "string" } }, { "name": "from", "in": "query", "description": "Display commands started from specified number in the results array. By default, commands are displayed from the start of the array (the number 0). This parameter is included if the result set is large, pagination might be required. This parameter is typically used in conjunction with size.", "schema": { "type": "integer", "format": "int32" } }, { "name": "size", "in": "query", "description": "Indicates the number of results to return in the request. This parameter is included if the result set is large, pagination might be required. This parameter is typically used in conjunction with from.", "schema": { "type": "integer", "format": "int32" } }, { "name": "sortBy", "in": "query", "description": "Sort field: createdAt | updatedAt | expiresAt.", "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Sort order: asc | desc", "schema": { "type": "string" } }, { "name": "metadata", "in": "query", "description": "Metadata key-value pairs, such as metadata.vendor=tetra. Pairs must be exact matches of existing metadata values.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"hits\": [\n {\n \"id\": \"013cf44b-e3ef-4757-84c2-ff19a133c955\",\n \"orgSlug\": \"mgtest\",\n \"targetId\": \"d7f4c013-26c3-4214-ae6c-f14467ad6848\",\n \"action\": \"TetraScience.Connector.gdc.HttpRequest\",\n \"expiresAt\": \"2021-01-10T23:58:43.749Z\",\n \"metadata\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\"\n },\n \"status\": \"SUCCESS\",\n \"requestBody\": {\n \"body\": {\n \"url\": \"https://jsonplaceholder.typicode.com/posts\",\n \"body\": {\n \"raw\": \"{ \\\"title\\\": \\\"foo\\\", \\\"body\\\": \\\"bar\\\", \\\"userId\\\": 1 }\",\n \"mode\": \"raw\"\n },\n \"method\": \"POST\",\n \"headers\": [],\n \"ignore_tls_certificate\": true\n },\n \"action\": \"TetraScience.Connector.gdc.HttpRequest\",\n \"targetId\": \"d7f4c013-26c3-4214-ae6c-f14467ad6848\",\n \"commandId\": \"013cf44b-e3ef-4757-84c2-ff19a133c955\",\n \"createdAt\": \"2021-01-08T23:32:31.456Z\",\n \"expiresAt\": \"2021-01-10T23:58:43.749Z\"\n },\n \"responseBody\": {\n \"body\": \"{\\\"title\\\":\\\"foo\\\",\\\"body\\\":\\\"bar\\\",\\\"userId\\\":1,\\\"id\\\":101}\",\n \"headers\": [\n {\n \"date\": \"Fri, 08 Jan 2021 23:32:33 GMT\"\n },\n {\n \"content-type\": \"application/json; charset=utf-8\"\n },\n {\n \"content-length\": \"65\"\n },\n {\n \"connection\": \"close\"\n },\n {\n \"set-cookie\": [\n \"__cfduid=d97d344facc0f82adc186946039b275d91610148753; expires=Sun, 07-Feb-21 23:32:33 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax\"\n ]\n },\n {\n \"x-powered-by\": \"Express\"\n },\n {\n \"x-ratelimit-limit\": \"1000\"\n },\n {\n \"x-ratelimit-remaining\": \"999\"\n },\n {\n \"x-ratelimit-reset\": \"1610148757\"\n },\n {\n \"vary\": \"Origin, X-HTTP-Method-Override, Accept-Encoding\"\n },\n {\n \"access-control-allow-credentials\": \"true\"\n },\n {\n \"cache-control\": \"no-cache\"\n },\n {\n \"pragma\": \"no-cache\"\n },\n {\n \"expires\": \"-1\"\n },\n {\n \"access-control-expose-headers\": \"Location\"\n },\n {\n \"location\": \"http://jsonplaceholder.typicode.com/posts/101\"\n },\n {\n \"x-content-type-options\": \"nosniff\"\n },\n {\n \"etag\": \"W/\\\"41-GDNaWfnVU6RZhpLbye0veBaqcHA\\\"\"\n },\n {\n \"via\": \"1.1 vegur\"\n },\n {\n \"cf-cache-status\": \"DYNAMIC\"\n },\n {\n \"cf-request-id\": \"0785f147a40000c2c743215000000001\"\n },\n {\n \"expect-ct\": \"max-age=604800, report-uri=\\\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\\\"\"\n },\n {\n \"report-to\": \"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\/\\/a.nel.cloudflare.com\\/report?s=YgiQkNmS0T9r5VNVT7lxY1UOFzqBlOObjIXH5rv5JQuqlQMNpSffc6TdpWXDfXXzBc6PYQcNe7mDBE58luZcL5QssEmJ9BT8GBlVowE9UPNrYlbhbuOF5tSY3QIO\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"\n },\n {\n \"nel\": \"{\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"\n },\n {\n \"server\": \"cloudflare\"\n },\n {\n \"cf-ray\": \"60e9b7ec3c79c2c7-FRA\"\n }\n ],\n \"statusCode\": 201\n },\n \"requestPayloadDelivery\": \"embedded\",\n \"createdByEntity\": \"user\",\n \"createdBy\": \"59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd\",\n \"createdAt\": \"2021-01-08T23:32:31.456Z\",\n \"updatedAt\": \"2021-01-08T23:32:34.219Z\"\n }\n ],\n \"hasNext\": false,\n \"from\": 0,\n \"size\": 100,\n \"sort\": \"desc\"\n}" } }, "schema": { "type": "object", "properties": { "hits": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "example": "013cf44b-e3ef-4757-84c2-ff19a133c955" }, "orgSlug": { "type": "string", "example": "mgtest" }, "targetId": { "type": "string", "example": "d7f4c013-26c3-4214-ae6c-f14467ad6848" }, "action": { "type": "string", "example": "TetraScience.Connector.gdc.HttpRequest" }, "expiresAt": { "type": "string", "example": "2021-01-10T23:58:43.749Z" }, "metadata": { "type": "object", "properties": { "key1": { "type": "string", "example": "value1" }, "key2": { "type": "string", "example": "value2" } } }, "status": { "type": "string", "example": "SUCCESS" }, "requestBody": { "type": "object", "properties": { "body": { "type": "object", "properties": { "url": { "type": "string", "example": "https://jsonplaceholder.typicode.com/posts" }, "body": { "type": "object", "properties": { "raw": { "type": "string", "example": "{ \"title\": \"foo\", \"body\": \"bar\", \"userId\": 1 }" }, "mode": { "type": "string", "example": "raw" } } }, "method": { "type": "string", "example": "POST" }, "headers": { "type": "array" }, "ignore_tls_certificate": { "type": "boolean", "example": true, "default": true } } }, "action": { "type": "string", "example": "TetraScience.Connector.gdc.HttpRequest" }, "targetId": { "type": "string", "example": "d7f4c013-26c3-4214-ae6c-f14467ad6848" }, "commandId": { "type": "string", "example": "013cf44b-e3ef-4757-84c2-ff19a133c955" }, "createdAt": { "type": "string", "example": "2021-01-08T23:32:31.456Z" }, "expiresAt": { "type": "string", "example": "2021-01-10T23:58:43.749Z" } } }, "responseBody": { "type": "object", "properties": { "body": { "type": "string", "example": "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1,\"id\":101}" }, "headers": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "string", "example": "Fri, 08 Jan 2021 23:32:33 GMT" } } } }, "statusCode": { "type": "integer", "example": 201, "default": 0 } } }, "requestPayloadDelivery": { "type": "string", "enum": [ "embedded", "referenced" ], "example": "embedded" }, "createdByEntity": { "type": "string", "example": "user" }, "createdBy": { "type": "string", "example": "59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd" }, "createdAt": { "type": "string", "example": "2021-01-08T23:32:31.456Z" }, "updatedAt": { "type": "string", "example": "2021-01-08T23:32:34.219Z" } } } }, "hasNext": { "type": "boolean", "example": false, "default": true }, "from": { "type": "integer", "example": 0, "default": 0 }, "size": { "type": "integer", "example": 100, "default": 0 }, "sort": { "type": "string", "example": "desc" } } } } } }, "500": { "description": "500", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 500,\n \"error\": \"Internal Server Error\",\n \"message\": \"An internal server error occurred\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 500, "default": 0 }, "error": { "type": "string", "example": "Internal Server Error" }, "message": { "type": "string", "example": "An internal server error occurred" } } } } } } }, "deprecated": false } }, "/v1/agents/{agentId}/command-queue": { "put": { "description": "Use this endpoint to enable or disable the command queue of an agent.", "summary": "Enable or disable command queue.", "operationId": "agent-command-queue-enable", "tags": [ "Agents" ], "parameters": [ { "in": "path", "name": "agentId", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The ID of the agent." } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "description": "Enable or disable the command queue for the agent", "type": "boolean" } }, "required": [ "enabled" ] } } } }, "responses": { "200": { "description": "Successful response with updated command queue details", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "example": true, "description": "Indicates whether the command queue is enabled." }, "name": { "type": "string", "example": "https://sqs.us-east-2.amazonaws.com/706717599419/onprem-9b9f275c-a60d-454f-8c6c-1ea094e3fd38.fifo", "description": "The URL of the command queue. It is returned only for an enabled queue." }, "visibilityTimeout": { "type": "integer", "example": 600, "description": "The visibility timeout for messages in the command queue. It is returned only for an enabled queue." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "description": "The HTTP status code." }, "error": { "type": "string", "example": "Bad Request", "description": "A short description of the error." }, "message": { "type": "string", "example": "Can not enable command queue within 60s after disabling the command queue.", "description": "Additional details about the error." } } } } } } } }, "get": { "summary": "Get command queue", "description": "Use this endpoint to get details about the command queue of an agent", "tags": [ "Agents" ], "operationId": "agent-command-queue-get", "parameters": [ { "in": "path", "name": "agentId", "required": true, "description": "The ID of the agent", "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Successful response with command queue details", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "example": true, "description": "Indicates whether the command queue is enabled or not." }, "name": { "type": "string", "example": "https://sqs.us-east-2.amazonaws.com/706717599419/onprem-9b9f275c-a60d-454f-8c6c-1ea094e3fd38.fifo", "description": "The URL of the command queue. It is returned only for an enabled queue." }, "visibilityTimeout": { "type": "integer", "example": 600, "description": "The visibility timeout for messages in the command queue. It is returned only for an enabled queue." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400 }, "error": { "type": "string", "example": "Bad Request" }, "message": { "type": "string", "example": "Error validating payload" }, "validation": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "example": "agentId must be a valid GUID" } } } } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Agent with id 9b9f275c-a60d-454f-8c6c-1ea094e3fd37 not found" } } } } } } } } }, "/v1/agents": { "post": { "summary": "Create an agent", "description": "Use this endpoint to create a new agent.", "tags": [ "Agents" ], "operationId": "agent-create", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "type", "integrationType", "integrationId" ], "properties": { "name": { "type": "string", "description": "Name of the new agent. Validation: It may contain any alphanumeric character, spaces, and the following special characters, `-`, `_`, `+`, `.`, `/`.", "example": "Agent name" }, "description": { "type": "string", "description": "Description of the new agent. It may contain any alphanumeric character, spaces, line breaks, and the following special characters, `-`, `_`, `+`, `.`, `/`.", "example": "Agent description" }, "type": { "type": "string", "description": "Type of the new agent. The valid types are `file-log`, `empower`, `unicorn`, `labx`, `chromeleon` or `user-defined`.", "enum": [ "file-log", "empower", "unicorn", "labx", "chromeleon", "user-defined" ], "example": "file-log" }, "sourceType": { "type": "string", "description": "Source Type of a user-defined agent. For a user-defined agent, it may contain any lower-case alphanumeric character, spaces, and the following special characters, `-`, `_`, `+`, `.`, `/`. However, a space can't be the first character. For other agent types it must be empty, null or not present", "example": "" }, "integrationType": { "type": "string", "description": "New agent's integration type. The valid types are `api` or `datahub`.", "enum": [ "api", "datahub" ] }, "integrationId": { "type": "string", "description": "Id of the connector to be used by the new agent, in GUID format", "example": "6f166302-df8a-4044-ab4b-7ddd3eefb50b", "format": "uuid" }, "datahubId": { "type": "string", "description": "Id of the Data Hub the new agent is using, in GUID format. It is required for integrations of type 'datahub'. It must be set to null, empty, or not present for integrations of type 'api'.", "format": "uuid", "example": null }, "tags": { "type": "array", "items": { "type": "string" }, "example": [ "tag1" ], "description": "Tags to associate with the agent." }, "metadata": { "type": "object", "additionalProperties": true, "example": { "metadataKey": "metadataValue" }, "description": "Metadata to associate with the agent." }, "labels": { "type": "object", "properties": { "labelsToAdd": { "description": "Labels to add the agent", "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 128, "example": "labelKey" }, "value": { "type": "string", "example": "labelValue" } }, "required": [ "name", "value" ] } } }, "required": [ "labelsToAdd" ], "description": "Labels to associate with the agent" } } } } } }, "responses": { "200": { "description": "Successful response with agent details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "example": "9b9f275c-a60d-454f-8c6c-1ea094e3fd38", "format": "uuid", "description": "The ID of the agent." }, "name": { "type": "string", "example": "File-Log Agent", "description": "The name of the agent." }, "description": { "type": "string", "example": "description", "description": "The description of the agent." }, "sourceType": { "type": "string", "nullable": true, "description": "The source type of the agent (nullable)." }, "type": { "type": "string", "example": "file-log", "description": "The type of agent." }, "integrationType": { "type": "string", "example": "api", "description": "The integration type of the agent." }, "integrationId": { "type": "string", "example": "6f166302-df8a-4044-ab4b-7ddd3eefb50b", "format": "uuid", "description": "The integration ID of the agent." }, "datahubId": { "type": "string", "format": "uuid", "nullable": true, "description": "The Data Hub ID of the agent (nullable)." }, "sourceId": { "type": "string", "example": "9201d7a7-2282-4ef2-b295-a1d1d1927b9a", "format": "uuid", "description": "The source ID of the agent." }, "isEnabled": { "type": "boolean", "example": true, "description": "Indicates if the agent is enabled or not." }, "tags": { "type": "array", "items": { "type": "string" }, "example": [ "tag1" ], "description": "Tags associated with the agent." }, "metadata": { "type": "object", "additionalProperties": true, "example": null, "description": "Metadata associated with the agent." }, "config": { "$ref": "#/components/schemas/FLAConfiguration" } } } } } }, "400": { "description": "Bad Request.", "content": { "application/json": { "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "format": "int32", "example": 400 }, "error": { "type": "string", "example": "Bad Request" }, "message": { "type": "string", "example": "Error validating payload" }, "validation": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "example": "\"datahubId\" is required" } } } } } } } } } } }, "get": { "summary": "Get agents", "description": "Use this endpoint to get a list of agents.", "tags": [ "Agents" ], "operationId": "agents-get", "parameters": [ { "name": "include", "in": "query", "description": "Each agent returned will include its associated labels when the value is 'labels'. Otherwise this parameter is ignored", "schema": { "type": "string" }, "example": "labels" } ], "responses": { "200": { "description": "Successful response with a list of all agents.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/paths/~1v1~1agents~1{agentId}/get/responses/200/content/application~1json/schema" } } } } } } } }, "/v1/agents/{agentId}/enabled": { "put": { "summary": "Enable or disable an agent", "description": "Use this endpoint to enable or disable an agent", "tags": [ "Agents" ], "operationId": "agent-enable", "parameters": [ { "in": "path", "name": "agentId", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The ID of the agent." } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "description": "Enable or disable the the agent", "type": "boolean" } }, "required": [ "enabled" ] } } } }, "responses": { "200": { "description": "Agent isEnabled property updated successfully", "content": { "application/json": { "schema": { "type": "object" }, "example": {} } } } } } }, "/v1/agents/{agentId}/configuration/list": { "get": { "summary": "Get File-Log agent configuration list", "description": "Use this endpoint to get the past configurations of a File-Log agent", "tags": [ "Agents" ], "operationId": "agent-get-configuration-list", "parameters": [ { "name": "agentId", "in": "path", "description": "Agent ID", "schema": { "type": "string" }, "required": true }, { "name": "page", "in": "query", "description": "Page number", "schema": { "type": "integer", "minimum": 0, "default": 1 }, "allowEmptyValue": false }, { "name": "size", "in": "query", "description": "Number of items per page", "schema": { "type": "integer", "minimum": 1, "default": 10 }, "allowEmptyValue": false }, { "name": "by", "in": "query", "description": "Filter by agent config type", "schema": { "type": "string", "enum": [ "local", "cloud", "all" ], "default": "all" }, "allowEmptyValue": false }, { "name": "status", "in": "query", "description": "Filter by agent config by its command status", "schema": { "type": "string", "enum": [ "CREATED", "UNSENT", "PENDING", "PURGED", "ERROR", "PROCESSING", "REJECTED", "SUCCESS", "FAILURE", "all" ], "default": "all" }, "allowEmptyValue": false }, { "name": "order", "in": "query", "description": "Sorting order by creation date", "schema": { "type": "string", "enum": [ "asc", "desc" ], "default": "desc" }, "allowEmptyValue": false } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "page": { "type": "integer", "example": 1 }, "size": { "type": "integer", "example": 10 }, "hasNext": { "type": "boolean", "example": true }, "hits": { "type": "array", "items": { "$ref": "#/components/schemas/AgentConfiguration" } } } } } } } } } }, "/v1/agents/{agentId}/configuration": { "get": { "summary": "Get File-Log agent configuration", "description": "Use this endpoint to get the latest configuration, of the type requested, of a File Log Agent", "tags": [ "Agents" ], "operationId": "agent-get-configuration", "parameters": [ { "name": "agentId", "in": "path", "description": "Agent ID", "schema": { "type": "string" }, "required": true }, { "name": "type", "in": "query", "description": "Type of the configuration to be returned, 'cloud' or 'local'. If the parameter is not provided, The endpoint will default to 'local' type.", "schema": { "type": "string", "enum": [ "local", "cloud" ] }, "required": false } ], "responses": { "200": { "description": "Successful response with the latest agent configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentConfiguration" } } } } } }, "post": { "summary": "Remotely configure a running File-Log agent", "description": "-| This endpoint allows configuration of a running File-Log Agent with paths. The File-Log Agent must be version 4.1.0 or greater, and configured to Receive Commands. Additionally, the Command Queue must be enabled for this Agent on TDP.\nThis will remove any paths not included in the JSON. To preserve existing paths, you must include them each time you POST.\nIf the target's command queue doesn't exist or is not accessible, the API will return a 400 error code and doesn't create the command.\nFor more details, see https://developers.tetrascience.com/docs/configuring-the-file-log-agent-in-the-cloud.", "tags": [ "Agents" ], "operationId": "agent-post-configuration", "parameters": [ { "name": "agentId", "in": "path", "description": "Agent ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "destination_id": { "type": "string", "format": "uuid", "description": "**FLA v4.3.0+**: The Destination Id of the Agent", "example": "2e72c40f-432e-46a9-a027-e70686e8cd39" }, "services_enabled": { "type": "array", "items": { "type": "string", "enum": [ "fileWatcher" ] }, "description": "The services enabled for the Agent", "example": [ "fileWatcher" ] }, "services_configuration": { "type": "object", "properties": { "fileWatcher": { "type": "object", "properties": { "use_path_configuration": { "type": "boolean", "description": "Whether to use path level configuration for start date and interval. Must be set to true.", "example": true }, "paths": { "type": "array", "items": { "$ref": "#/components/schemas/FLAFileWatcherPathConfigurationItem" } } }, "required": [ "use_path_configuration" ] } }, "required": [ "fileWatcher" ] } }, "required": [ "services_enabled", "services_configuration" ] } } } }, "responses": { "200": { "description": "Successful response with the id to the command that executed the update", "content": { "application/json": { "examples": { "Result": { "value": { "commandId": "729dec7d-26f6-4ac2-b1c0-2ae918e270dc" } } }, "schema": { "type": "object", "properties": { "commandId": { "type": "string", "example": "729dec7d-26f6-4ac2-b1c0-2ae918e270dc" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "examples": { "Agent is Offline": { "value": { "statusCode": 400, "error": "Bad Request", "message": "Cloud configuration is supported only by Online agents" } }, "Queue is not created or inaccessible": { "value": { "statusCode": 400, "error": "Bad Request", "message": "Queue for target id 729dec7d-26f6-4ac2-b1c0-2ae918e270dc not found or was not writeable. If you see this message in error, please try disabling and re-enabling the queue." } } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 400, "default": 0 }, "error": { "type": "string", "example": "Bad Request" }, "message": { "type": "string", "example": "Cloud configuration is supported only by Online agents" } } } } } }, "404": { "description": "Agent not found", "content": { "application/json": { "examples": { "Result": { "value": { "statusCode": 404, "error": "Not Found", "message": "Agent with id 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda not found" } } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Agent with id 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda not found" } } } } } } } } }, "/v1/agents/{agentId}": { "get": { "summary": "Get agent", "description": "Use this endpoint to get the details of a single agent.", "operationId": "agent-get", "tags": [ "Agents" ], "parameters": [ { "in": "path", "name": "agentId", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The ID of the agent." } ], "responses": { "200": { "description": "Successful response with agent details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "example": "9b9f275c-a60d-454f-8c6c-1ea094e3fd38", "format": "uuid", "description": "The unique identifier of the agent." }, "name": { "type": "string", "example": "FLA Agent", "description": "The name of the agent." }, "description": { "type": "string", "example": "description", "description": "The description of the agent." }, "sourceType": { "type": "string", "nullable": true, "description": "The source type of the agent (nullable)." }, "type": { "type": "string", "example": "file-log", "description": "The type of the agent." }, "integrationType": { "type": "string", "example": "api", "description": "The integration type of the agent." }, "integrationId": { "type": "string", "example": "6f166302-df8a-4044-ab4b-7ddd3eefb50b", "format": "uuid", "description": "The integration ID of the agent." }, "datahubId": { "type": "string", "nullable": true, "format": "uuid", "description": "The Data Hub ID of the agent (nullable)." }, "sourceId": { "type": "string", "example": "9201d7a7-2282-4ef2-b295-a1d1d1927b9a", "description": "The source ID of the agent.", "format": "uuid" }, "isEnabled": { "type": "boolean", "example": true, "description": "Indicates whether the agent is enabled." }, "tags": { "type": "array", "items": { "type": "string" }, "example": [ "tag1" ], "description": "Tags associated with the agent." }, "metadata": { "type": "object", "additionalProperties": true, "example": { "metadataKey": "metadataValue" }, "description": "Metadata associated with the agent." }, "labels": { "type": "array", "description": "Labels associated with the agent", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The label name", "example": "vendor" }, "value": { "type": "string", "description": "The label value", "example": "Beckman Coulter" } }, "required": [ "name", "value" ] } }, "config": { "$ref": "#/components/schemas/FLAConfiguration" }, "configStatus": { "type": "string", "example": "SUCCESS", "description": "Agent configuration status of a File-Log agent, null otherwise." }, "configStatusUpdatedAt": { "type": "string", "format": "date-time", "example": "2023-08-28T14:43:59.753Z", "description": "Timestamp when configuration status was updated." }, "configStatusError": { "type": "string", "nullable": true, "description": "Configuration status error message of a File-Log agent, null otherwise." }, "configChangedBy": { "type": "string", "example": "local", "description": "User who changed the configuration of a File-Log agent, null otherwise." }, "configChangedAt": { "type": "string", "format": "date-time", "example": "2023-09-05T16:25:01.697Z", "description": "Timestamp when configuration of a File-Log agent was changed, null otherwise." }, "createdAt": { "type": "string", "format": "date-time", "example": "2023-04-04T14:01:30.136Z", "description": "Timestamp when the agent was created." }, "updatedAt": { "type": "string", "format": "date-time", "example": "2023-10-10T16:29:08.573Z", "description": "Timestamp when the agent was last updated." }, "orgSlug": { "type": "string", "example": "tetrascience", "description": "Organization slug." }, "status": { "type": "string", "example": "Online", "description": "The status of the agent." }, "version": { "type": "string", "example": "v4.3.1", "description": "The version of the agent." }, "liveType": { "type": "string", "example": "file-log", "description": "Type reported by the agent to the platform." }, "host": { "type": "object", "properties": { "ip": { "type": "string", "example": "10.60.4.128", "description": "The IP address of the agent host." }, "name": { "type": "string", "example": "EC2AMAZ-53HU01M", "description": "The name of the agent host." } }, "description": "Information about the machine that the agent is running on." }, "queue": { "type": "object", "properties": { "enabled": { "type": "boolean", "example": true, "description": "Indicates whether the command queue is enabled." }, "name": { "type": "string", "example": "https://sqs.us-east-2.amazonaws.com/706717599419/onprem-9b9f275c-a60d-454f-8c6c-1ea094e3fd38.fifo", "description": "The URL of the command queue. It is returned only for an enabled queue." }, "visibilityTimeout": { "type": "integer", "example": 600, "description": "The visibility timeout for messages in the command queue. It is returned only for an enabled queue." } }, "description": "Information about the command queue." } }, "description": "Agent status and configuration information." } } } } } }, "put": { "summary": "Update an agent", "description": "Use this endpoint to update a single agent", "operationId": "agent-update", "tags": [ "Agents" ], "parameters": [ { "in": "path", "name": "agentId", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The ID of the agent." } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "type", "integrationType", "integrationId" ], "properties": { "name": { "type": "string", "description": "Updated name of the agent. Validation: It may contain any alphanumeric character, spaces, and the characters - _ + . /" }, "description": { "type": "string", "description": "Updated description of the agent. It may contain any alphanumeric character, spaces, line breaks, and the characters - _ + . /" }, "type": { "type": "string", "description": "Type of the existing agent. The valid types are file-log, empower, unicorn, labx, chromeleon or user-defined It is not allowed to change the type of the agent, so this parameter must match the type of the agent being updated", "enum": [ "file-log", "empower", "unicorn", "labx", "chromeleon", "user-defined" ], "example": "file-log" }, "sourceType": { "type": "string", "description": "Source Type of a user-defined agent. For a user-defined agent, it may contain any lower-case alphanumeric character, spaces, and the characters - _ + . / However, a space can't be the first character. For other agent types it must be empty, null or not present", "example": "" }, "integrationType": { "type": "string", "description": "Type of the updated integration for the agent. The valid types are `api` or `datahub.", "enum": [ "api", "datahub" ] }, "integrationId": { "type": "string", "description": "Id of the connector to be used by the agent, in GUID format", "example": "6f166302-df8a-4044-ab4b-7ddd3eefb50b", "format": "uuid" }, "datahubId": { "type": "string", "description": "Id of the Data Hub to be used by the new agent, in GUID format. It is required for integrations of type 'datahub'. It must be set to null, empty or not present for integrations of type 'api'", "format": "uuid", "example": null }, "tags": { "type": "array", "items": { "type": "string" }, "example": [ "tag1" ], "description": "Tags to associate with the agent." }, "metadata": { "type": "object", "additionalProperties": true, "example": { "metadataKey": "metadataValue" }, "description": "Metadata to associate with the agent." }, "labels": { "type": "object", "properties": { "labelsToAdd": { "type": "array", "description": "Labels to add the agent", "items": { "$ref": "#/paths/~1v1~1agents/post/requestBody/content/application~1json/schema/properties/labels/properties/labelsToAdd" } }, "labelsToDrop": { "oneOf": [ { "type": "array", "items": { "type": "integer", "description": "Id of the label to drop from the agent" } }, { "type": "integer", "description": "Id of the label to drop from the agent" } ], "description": "Labels to drop from the agent" } }, "description": "Labels to add or drop from the agent" } } } } } }, "responses": { "200": { "$ref": "#/paths/~1v1~1agents~1{agentId}/get/responses/200" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "format": "int32", "example": 400 }, "error": { "type": "string", "example": "Bad Request" }, "message": { "type": "string", "example": "Agent type change is not allowed" } } } } } } } } }, "/v1/data-acquisition/agent/credentials": { "post": { "summary": "Agent Temp AWS Credentials", "description": "This endpoint returns temporary credentials for a given organization based on Data Hub policy. When using those credentials, client can upload files to their Amazon S3 bucket and write log to Amazon CloudWatch. Returned credentials have expiration time 60 minutes.", "tags": [ "Data Acquisition" ], "operationId": "agent-temp-aws-credentials", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "agentId", "agentVersion" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TDP web UI, where the user-defined integration is created. For existing TetraScience agent who can connect to the TDP{ directly, provide the agentId to this field." }, "agentVersion": { "type": "string", "description": "The Agent version, such as \"v1.0.0\"." } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"AccessKeyId\": \"EXAMPLEAWSACCESSKEYID\",\n \"SecretAccessKey\": \"EXAMPLEAWSSECRETACCESSKEY/REDACTED\",\n \"SessionToken\": \"EXAMPLE_AWS_SESSION_TOKEN_REDACTED\",\n \"Expiration\": \"2020-07-01T19:12:22.000Z\"\n}" } }, "schema": { "type": "object", "properties": { "AccessKeyId": { "type": "string", "example": "EXAMPLEAWSACCESSKEYID" }, "SecretAccessKey": { "type": "string", "example": "EXAMPLEAWSSECRETACCESSKEY/REDACTED" }, "SessionToken": { "type": "string", "example": "EXAMPLE_AWS_SESSION_TOKEN_REDACTED" }, "Expiration": { "type": "string", "example": "2020-07-01T19:12:22.000Z" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } } }, "deprecated": false } }, "/v1/agents/{agentId}/connector": { "put": { "summary": "Change agent connector", "description": "Use this endpoint to change the connector of an agent", "tags": [ "Agents" ], "operationId": "agent-update-connector", "parameters": [ { "in": "path", "name": "agentId", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The ID of the agent." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "integrationType": { "type": "string", "description": "Type of the integration. The valid types are `api` or `datahub`.", "enum": [ "api", "datahub" ] }, "datahubId": { "format": "uuid", "type": "string", "description": "Id of the Data Hub to be used by the new agent, in GUID format. It is required for integrations of type 'datahub'. It must be set to null, empty or not present for integrations of type 'api'" }, "integrationId": { "type": "string", "format": "uuid", "description": "The ID of the connector" } } }, "example": { "integrationType": "datahub", "datahubId": "46568316-feda-4a04-889e-792064ded110", "integrationId": "222b2fcb-03ab-4875-a420-77bb35fd8f63" } } } }, "responses": { "200": { "description": "Agent connector updated successfully", "content": { "application/json": { "schema": { "type": "object" }, "example": {} } } } } } }, "/v1/dataapps/rules-check": { "post": { "summary": "Check how many data apps match the provided access control rules", "tags": [ "Data Apps" ], "operationId": "check-data-app-rules", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "filters": { "description": "Access control filter (recursive \u2014 supports label, allow-all, and, or)", "type": "object", "properties": { "type": { "type": "string" }, "label": { "type": "string" }, "value": { "type": "string" }, "operator": { "type": "string" } }, "additionalProperties": true } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "dataAppsCount": { "type": "integer" } } } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/v1/dataapps/apps/container/cookies": { "delete": { "summary": "Clear the selected data app and auth cookies", "tags": [ "Data Apps" ], "operationId": "clear-embed-cookies", "responses": { "200": { "description": "OK" } } } }, "/v1/data-acquisition/connectors": { "get": { "tags": [ "Connectors" ], "operationId": "ConnectorController_getAll", "summary": "Get all Connectors", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get a list of Connectors.", "responses": { "200": { "description": "Successful response with a list of all Connectors", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorsResponse" } } } } } } }, "/v1/data-acquisition/connectors/{id}": { "get": { "tags": [ "Connectors" ], "operationId": "ConnectorController_getById", "summary": "Get a Connector by id", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get a Connector's details by id.", "parameters": [ { "name": "id", "description": "The Connector's id.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "resolveSecrets", "description": "If true, resolves secrets in the Connector's config. Requires organization admin permissions.", "required": false, "in": "query", "schema": { "type": "boolean" } }, { "name": "include", "description": "Include additional Connector fields. 'config' includes the Connector's config. 'artifact' includes the Connector artifact's details.", "required": false, "in": "query", "example": [ "config" ], "schema": { "type": "array", "items": { "type": "string", "enum": [ "config", "artifact" ] } } } ], "responses": { "200": { "description": "Successful response with a Connector's details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorDetailsDto" } } } } } } }, "/v1/data-acquisition/connectors/{id}/metrics": { "get": { "tags": [ "Connectors" ], "operationId": "ConnectorController_getFileMetrics", "summary": "Get a Connector's metrics", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get the metrics reported by a Connector, including resource usage and file upload and error rates.", "parameters": [ { "name": "id", "description": "The Connector's id.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful response with the metrics reported by a Connector", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConnectorMetricsDto" } } } } } } }, "/v1/data-acquisition/connectors/{id}/files": { "get": { "tags": [ "Connectors" ], "operationId": "ConnectorController_getFiles", "summary": "Get a Connector's reported files", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get metadata about the files reported by a Connector, including those that have not yet been uploaded or that have failed.", "parameters": [ { "name": "id", "description": "The Connector's id.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "fileIds", "description": "A list of file ids to filter by.", "required": false, "in": "query", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "excludeFileIds", "description": "A list of file ids to exclude from the response.", "required": false, "in": "query", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "uniqueExternalIds", "description": "A list of unique external ids to filter by. Used by Connectors to deduplicate external files.", "required": false, "in": "query", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "excludeUniqueExternalIds", "description": "A list of unique external ids to exclude from the response. Used by Connectors to deduplicate external files.", "required": false, "in": "query", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "statuses", "description": "A list of file statuses to filter by.", "required": false, "in": "query", "schema": { "type": "array", "items": { "type": "string", "enum": [ "PENDING", "PROCESSING", "SKIPPED", "SUCCESS", "ERROR" ] } } }, { "name": "maxErrors", "description": "The maximum number of errors to filter by. Used by Connectors to limit file upload retries.", "required": false, "in": "query", "schema": { "type": "number" } }, { "name": "createdBefore", "description": "The maximum creation date to filter by.", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "createdAfter", "description": "The minimum creation date to filter by.", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedBefore", "description": "The maximum update date to filter by.", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "updatedAfter", "description": "The minimum update date to filter by.", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "orderBy", "description": "The field to order by.", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "filepath", "status", "errorCount", "updatedAt", "createdAt" ] } }, { "name": "orderDirection", "description": "The order direction.", "required": false, "in": "query", "schema": { "enum": [ "ASC", "DESC" ], "type": "string" } }, { "name": "take", "description": "The number of files to take. Default is 50.", "required": false, "in": "query", "schema": { "type": "number", "default": 50 } }, { "name": "skip", "description": "The number of files to skip.", "required": false, "in": "query", "schema": { "type": "number", "default": 0 } } ], "responses": { "200": { "description": "Successful response with a list of files reported by a Connector", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorFilesResponse" } } } } } } }, "/v1/data-acquisition/connectors/{id}/files/stats": { "get": { "tags": [ "Connectors" ], "operationId": "ConnectorController_getFileStats", "summary": "Get statistics about a Connector's files", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get the file statistics reported by a Connector, including the total number of files and the number of files in each status.", "parameters": [ { "name": "id", "description": "The Connector's id.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful response with the file stats reported by a Connector", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetConnectorFileStatsDto" } } } } } } }, "/v1/dataapps/providers": { "post": { "summary": "Create a new Data App Provider", "tags": [ "Data App Providers" ], "operationId": "create-a-data-app-provider", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of provider. Must be a selection from provider templates." }, "name": { "type": "string", "description": "The unique name of this provider" }, "orgId": { "type": "string", "description": "Organization ID" }, "iconUrl": { "type": "string", "description": "The URL to the icon image" }, "secrets": { "type": "array", "description": "The secrets to associate with this provider", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "isExistingSecret": { "type": "boolean" } } } } } } } } }, "responses": { "201": { "description": "OK" }, "400": { "description": "Bad Request" }, "503": { "description": "Service Unavailable" } } }, "get": { "summary": "Fetch all data app providers", "tags": [ "Data App Providers" ], "operationId": "fetch-data-app-providers", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10, "minimum": 1, "maximum": 100 }, "description": "Maximum number of items to return" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "minimum": 1 }, "description": "Page number for pagination (starts from 1)" }, { "name": "providerName", "in": "query", "required": false, "schema": { "type": "string" }, "description": "The name of the provider to filter on" }, { "name": "orgId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "includeArn", "in": "query", "required": false, "schema": { "type": "boolean", "default": false }, "description": "Indicate if the secret ARNs should be included in the response" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PaginatedDataAppProvider" } } } } }, "400": { "description": "Bad Request" }, "503": { "description": "Service Unavailable" } } } }, "/v1/dataapps/apps/linked": { "post": { "summary": "Create Linked Data App", "tags": [ "Linked Data Apps" ], "operationId": "create-linked-data-app", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "url": { "type": "string" }, "iconUrl": { "type": "string", "format": "byte" } } } } } }, "responses": { "201": { "description": "Created" }, "400": { "description": "Bad Request" }, "500": { "description": "Internal Server Errors" } } } }, "/v1/dataapps/apps/manage": { "post": { "summary": "Install, update, or uninstall Data Apps", "description": "Perform one or more install, update, or uninstall operations on embedded Data Apps. Submit an array of operations to manage which Data Apps are enabled in your organization. This endpoint supports automated governance workflows from CI/CD pipelines, GitHub Actions, or ServiceNow.", "tags": [ "Embedded Data Apps" ], "operationId": "create-or-delete-embedded-data-app", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "minItems": 1, "items": { "type": "object", "required": [ "action" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "Data App ID. Required for UPDATE and DELETE actions." }, "name": { "type": "string", "description": "Data App name. Required for CREATE and UPDATE actions." }, "slug": { "type": "string", "description": "Data App slug identifier. Required for CREATE and UPDATE actions." }, "type": { "type": "string", "description": "The type of data app. Always \"CONTAINER\".", "enum": [ "CONTAINER" ], "default": "CONTAINER" }, "deploymentType": { "type": "string", "enum": [ "SERVER" ], "description": "Deployment model: SERVER (ECS container, iFrame).", "default": "SERVER" }, "version": { "type": "string", "description": "Semantic version to install (e.g., \"v2.1.0\"). Required for CREATE and UPDATE actions." }, "namespace": { "type": "string", "description": "Artifact namespace (e.g., \"common\"). Required for CREATE and UPDATE actions." }, "action": { "type": "string", "enum": [ "CREATE", "UPDATE", "DELETE" ], "description": "The operation to perform: CREATE (install), UPDATE (modify), or DELETE (uninstall)." }, "labels": { "type": "array", "description": "Labels for EARS access control. Determines which users can see and use this Data App.", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string", "description": "Label name (e.g., \"department\", \"environment\")." }, "value": { "type": "string", "description": "Label value (e.g., \"research\", \"production\")." } } } }, "providerIds": { "type": "array", "description": "Provider IDs to associate with this Data App on install.", "items": { "type": "string", "format": "uuid" } } } } }, "examples": { "install_app": { "summary": "Install a Data App", "value": [ { "action": "CREATE", "name": "Akta Visualizer", "slug": "akta-visualizer", "namespace": "common", "version": "v1.0.0", "type": "CONTAINER", "deploymentType": "SERVER" } ] }, "install_app_with_labels": { "summary": "Install a Data App with EARS labels", "value": [ { "action": "CREATE", "name": "Empower Results Viewer", "slug": "empower-results-viewer", "namespace": "common", "version": "v2.1.0", "type": "CONTAINER", "deploymentType": "SERVER", "labels": [ { "name": "department", "value": "chromatography" } ] } ] }, "uninstall_app": { "summary": "Uninstall a Data App", "value": [ { "action": "DELETE", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } ] }, "batch_operations": { "summary": "Install one and uninstall another", "value": [ { "action": "CREATE", "name": "Chromeleon Connector", "slug": "chromeleon-connector", "namespace": "common", "version": "v1.0.0", "type": "CONTAINER", "deploymentType": "SERVER" }, { "action": "DELETE", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } ] } } } } }, "responses": { "200": { "description": "All operations completed successfully." }, "400": { "description": "Validation error. Common causes: missing required fields (action, version, namespace, slug, or name for CREATE/UPDATE), or invalid field values.", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" } } } } } }, "403": { "description": "Data App management is not enabled for this organization." }, "503": { "description": "Data App management service is temporarily unavailable. Retry with backoff." } } }, "get": { "summary": "List available Data Apps for installation", "description": "Retrieves the catalog of Data Apps available for installation in your organization, including their current installation status. Use this as the discovery endpoint for automated governance workflows \u2014 browse available apps and check requirements before installing.", "tags": [ "Embedded Data Apps" ], "operationId": "fetch-all-available-data-apps", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10, "minimum": 1, "maximum": 100 }, "description": "Maximum number of items to return" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "minimum": 1 }, "description": "Page number for pagination (starts from 1)" }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string", "minLength": 1, "maxLength": 100 }, "description": "Search term to filter data apps by name or slug" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "dataApps": { "type": "array", "items": { "$ref": "#/components/schemas/DataAppManaged" } }, "count": { "type": "integer", "description": "Total number of data apps matching the search criteria" } }, "required": [ "dataApps", "count" ] }, "examples": { "example_response": { "summary": "Response with data apps and count", "value": { "dataApps": [ { "name": "Threads", "description": "A Streamlit-powered dashboard to manage threads. A thread is a way capture work-to-be-done by one or more individuals.", "slug": "threads", "version": "v0.8.0", "namespace": "common", "iconUrl": "https://example.com/icon.png", "otherVersions": [], "type": "CONTAINER", "artifactType": "CONTAINER", "deploymentType": "SERVER", "platformRequirements": [], "serviceRequirements": [ { "type": "ais", "minVersion": "v1.0.0" } ] }, { "name": "Chromatography Insights", "description": "A Streamlit-powered dashboard to visualize chromatography insights", "slug": "chromatography-insights", "version": "v1.7.0", "namespace": "common", "iconUrl": "https://example.com/icon.png", "type": "CONTAINER", "artifactType": "CONTAINER", "deploymentType": "SERVER", "platformRequirements": [ { "type": "ids", "namespace": "common", "slug": "lcuv-empower", "version": ">=15.0.0 <16.1.0" }, { "type": "ids", "namespace": "common", "slug": "lcuv-chromeleon", "version": "v6.0.0" }, { "type": "tetraflow", "namespace": "common", "slug": "chromatography-insights", "version": "v1.6.1" } ], "serviceRequirements": [] } ], "count": 25 } } } } } }, "400": { "description": "Bad Request - Invalid query parameters", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "description": "Error message describing the validation failure" } } }, "examples": { "invalid_search": { "summary": "Invalid search parameter", "value": { "error": "\"search\" is not allowed to be empty" } }, "invalid_limit": { "summary": "Invalid limit parameter", "value": { "error": "\"limit\" must be greater than or equal to 1" } } } } } }, "503": { "description": "Service Unavailable - Managed Data Apps settings are currently unavailable" } } } }, "/v1/externalevents/requests/creation": { "post": { "operationId": "createSubscription", "tags": [ "Edit Subscriptions", "Requests" ], "summary": "Request to create a new subscription", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeExternalSubscriptionCreate" } } } }, "responses": { "200": { "description": "Request created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" }, "501": { "$ref": "#/components/responses/501Any" } } } }, "/v1/dataapps/providers/{id}": { "delete": { "summary": "Delete a Data App Provider", "tags": [ "Data App Providers" ], "operationId": "delete-a-data-app-provider", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" }, "503": { "description": "Service Unavailable" } } }, "get": { "summary": "Fetch a Data App Provider", "tags": [ "Data App Providers" ], "operationId": "fetch-a-data-app-provider", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "orgId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "includeArn", "in": "query", "required": false, "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataAppProvider" } } } }, "404": { "description": "Not Found" }, "503": { "description": "Service Unavailable" } } }, "put": { "summary": "Update a Data App Provider", "tags": [ "Data App Providers" ], "operationId": "update-a-data-app-provider", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of provider. Must be a selection from provider templates." }, "name": { "type": "string", "description": "The unique name of this provider" }, "orgId": { "type": "string", "description": "Organization ID" }, "iconUrl": { "type": "string", "description": "The URL to the icon image" }, "secrets": { "type": "array", "description": "The secrets to associate with this provider", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "isExistingSecret": { "type": "boolean" } } } } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request" }, "503": { "description": "Service Unavailable" } } } }, "/v1/dataapps/kv/{appSlug}/{key}": { "delete": { "summary": "Delete connector key value by key for a data app", "tags": [ "Data Apps" ], "operationId": "delete-data-app-connector-key-value-by-key", "parameters": [ { "name": "appSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "artifact_type", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "CONTAINER", "TETRASPHERE" ] }, "description": "Required artifact type filter used during authorization and app lookup." }, { "name": "namespace", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Required artifact namespace filter used during authorization and app lookup." }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[^,]+$" }, "description": "Connector key. Commas are not allowed." } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" }, "503": { "description": "Service Unavailable" } } }, "get": { "summary": "Fetch connector key value by key for a data app", "tags": [ "Data Apps" ], "operationId": "fetch-data-app-connector-key-value-by-key", "parameters": [ { "name": "appSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "artifact_type", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "CONTAINER", "TETRASPHERE" ] }, "description": "Required artifact type filter used during authorization and app lookup." }, { "name": "namespace", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Required artifact namespace filter used during authorization and app lookup." }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[^,]+$" }, "description": "Connector key. Commas are not allowed." } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorKeyValue" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" }, "503": { "description": "Service Unavailable" } } } }, "/v1/dataapps/apps/linked/{id}": { "delete": { "summary": "Delete Linked Data App", "tags": [ "Linked Data Apps" ], "operationId": "delete-linked-data-app", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" }, "503": { "description": "Service Unavailable" } } }, "put": { "summary": "Update Linked Data App", "tags": [ "Linked Data Apps" ], "operationId": "update-linked-data-app", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "url": { "type": "string" }, "iconUrl": { "type": "string", "format": "byte" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request" }, "500": { "description": "Internal Server Error" } } } }, "/v1/accessGroups/{id}": { "delete": { "summary": "Delete an Access Group", "description": "Delete an [access group](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization).", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "204": { "description": "Access group deleted successfully." } } }, "get": { "summary": "Get Access Group Details", "description": "Get the details of a specific [access group](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization).", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Group information.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessGroup" } } } } } }, "put": { "summary": "Edit an Access Group", "description": "Edit an [access group's](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization) name, description, status, and [data access rules](https://developers.tetrascience.com/docs/managing-organization-details#create-access-groups).", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUpdateAccessGroup" } } } }, "responses": { "200": { "description": "The updated access group.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessGroup" } } } } } } }, "/v1/accessGroups/{id}/user/{userId}": { "delete": { "summary": "Remove a User from an Access Group", "description": "Remove a user from an [access group](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization).", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "userId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "204": { "description": "User removed from the access group." } } } }, "/v1/organizations/{organizationId}/users/{userId}": { "delete": { "description": "Remove a user from the organization, revoking all access and permissions. User account data and audit trails are preserved for compliance purposes.", "summary": "Delete user from organization", "tags": [ "Organizations" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/parameters/0" }, { "name": "userId", "required": true, "in": "path", "schema": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } ], "responses": { "204": { "description": "User deleted successfully" }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } } }, "/v1/roles/{roleId}": { "delete": { "summary": "Delete role by ID", "tags": [ "Roles" ], "parameters": [ { "$ref": "#/paths/~1v1~1roles~1%7BroleId%7D/get/parameters/0" } ], "responses": { "204": { "description": "Role deleted successfully" }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Role not found" } } }, "get": { "summary": "Get role by ID", "tags": [ "Roles" ], "parameters": [ { "name": "roleId", "required": true, "in": "path", "schema": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } ], "responses": { "200": { "description": "Responding with role", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1roles/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Role not found" } } }, "put": { "summary": "Update role by ID", "tags": [ "Roles" ], "parameters": [ { "$ref": "#/paths/~1v1~1roles~1%7BroleId%7D/get/parameters/0" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "allOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "ssoGroupMappings": { "type": "array", "items": { "type": "string", "example": "idp-group-name" } }, "enabled": { "type": "boolean" }, "policyScopes": { "type": "array", "minimum": 1, "items": { "type": "string", "enum": [ "developer", "dataUser", "dataOwner", "auditor", "analyst", "tenantAdmin", "orgAdmin", "member", "support" ], "example": "developer" } } } }, { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } } ] } } } }, "responses": { "200": { "description": "Responding with updated role", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1roles/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Role not found" } } } }, "/v1/externalevents/requests/{requestId}": { "parameters": [ { "name": "requestId", "in": "path", "required": true, "description": "ID of the request", "schema": { "type": "string" } } ], "delete": { "operationId": "deleteRequest", "tags": [ "Requests" ], "summary": "Delete a request by ID", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "405": { "description": "This request cannot yet be deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } }, "500": { "$ref": "#/components/responses/500Any" } } }, "get": { "operationId": "getRequest", "tags": [ "Requests" ], "summary": "Get a request by ID", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" } } } }, "/v1/externalevents/requests/deletion": { "post": { "operationId": "deleteSubscription", "tags": [ "Edit Subscriptions", "Requests" ], "summary": "Request to delete a subscription", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" } }, "required": [ "id" ] } } } }, "responses": { "200": { "description": "Request created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" }, "501": { "$ref": "#/components/responses/501Any" } } } }, "/v1/agents/{agentId}/config": { "get": { "deprecated": true, "summary": "Deprecated - Get File-Log agent configuration", "description": "This endpoint has been deprecated in favor of /v1/agents/{agentId}/configuration. Both endpoints are identical.", "tags": [ "Agents" ], "operationId": "deprecated-agent-get-configuration", "parameters": [ { "name": "agentId", "in": "path", "description": "Agent ID", "schema": { "type": "string" }, "required": true }, { "name": "type", "in": "query", "description": "Type of the configuration to be returned, 'cloud' or 'local'. If this parameter is not provided, the endpoint will default to 'local'.", "schema": { "type": "string", "enum": [ "local", "cloud" ] }, "required": false } ], "responses": { "200": { "$ref": "#/paths/~1v1~1agents~1{agentId}~1configuration/get/responses/200" } } }, "post": { "summary": "Deprecated - Remotely configure a running File-Log agent", "description": "-| This endpoint has been deprecated in favor of /v1/agents/{agentId}/configuration. Both endpoints are identical.", "deprecated": true, "operationId": "deprecated-agent-post-configuration", "tags": [ "Agents" ], "parameters": [ { "name": "agentId", "in": "path", "description": "Agent ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "$ref": "#/paths/~1v1~1agents~1{agentId}~1configuration/post/requestBody" }, "responses": { "200": { "$ref": "#/paths/~1v1~1agents~1{agentId}~1configuration/post/responses/200" }, "400": { "$ref": "#/paths/~1v1~1agents~1{agentId}~1configuration/post/responses/400" }, "404": { "$ref": "#/paths/~1v1~1agents~1{agentId}~1configuration/post/responses/404" } } } }, "/v1/pipeline/{pipelineId}/create-pipeline-bulk-processing-job": { "post": { "summary": "Create a Bulk Processing Job", "description": "", "operationId": "DL-FI-createBulkProcessJob", "tags": [ "Pipelines" ], "parameters": [ { "name": "pipelineId", "in": "path", "description": "The ID of the pipeline", "schema": { "type": "string", "format": "uuid" }, "required": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "pipelineProcessingTypes", "startDate", "endDate" ], "properties": { "pipelineProcessingTypes": { "type": "array", "minItems": 1, "items": { "type": "string", "enum": [ "PIPELINE_PROCESSING_UNPROCESSED", "PIPELINE_PROCESSING_FAILED", "PIPELINE_PROCESSING_COMPLETED" ] } }, "autoProcess": { "type": "boolean", "default": true }, "name": { "type": "string" }, "concurrentNumber": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 1000 }, "startDate": {}, "endDate": {} } } } } }, "responses": { "200": { "$ref": "#/components/responses/200Any" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "409": { "description": "Bulk processing job already exists", "content": { "application/json": { "schema": {} } } }, "500": { "description": "Internal error", "content": { "application/json": { "schema": {} } } } } } }, "/v1/pipeline/create": { "post": { "summary": "Create New Pipeline", "description": "", "operationId": "DL-FI-createPipeline", "tags": [ "Pipelines" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineInputObject" } } } }, "responses": { "200": { "$ref": "#/components/responses/200PipelineObject" }, "400": { "$ref": "#/components/responses/400Any" } } } }, "/v1/pipeline/{pipelineId}": { "get": { "summary": "Get Details of a Single Pipeline", "description": "Search data pipeline workflows", "operationId": "DL-FI-getPipeline", "tags": [ "Pipelines" ], "parameters": [ { "name": "pipelineId", "in": "path", "description": "The ID of the pipeline", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "$ref": "#/components/responses/200PipelineObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/pipeline/{pipelineId}/revisions/{revisionNumber}": { "get": { "summary": "Get Pipline Revision Contents", "description": "", "operationId": "DL-FI-getRevision", "tags": [ "Pipelines" ], "parameters": [ { "name": "pipelineId", "in": "path", "description": "The ID of the pipeline", "schema": { "type": "string", "format": "uuid" }, "required": true }, { "name": "revisionNumber", "in": "path", "description": "The number of the revision to get", "schema": { "type": "integer" }, "required": true } ], "responses": { "200": { "description": "The pipeline at the time of the requested revision number", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineRevision" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/pipeline/{pipelineId}/revisions": { "get": { "summary": "List Pipeline Revision History", "description": "", "operationId": "DL-FI-getRevisions", "tags": [ "Pipelines" ], "parameters": [ { "name": "pipelineId", "in": "path", "description": "The ID of the pipeline", "schema": { "type": "string", "format": "uuid" }, "required": true }, { "name": "limit", "in": "query", "description": "The maximum number of results to return. Defaults to 30", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100 } }, { "name": "cursor", "in": "query", "description": "The first element in the dataset to query from. The cursor is a revision number", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "A list of revisions and a cursor pointing to the next set of revisions", "content": { "application/json": { "schema": { "type": "object", "required": [ "revisions" ], "properties": { "revisions": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineRevisionMetadata" } }, "next": { "type": "number" } } } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/pipeline/import": { "post": { "summary": "Import a Pipeline", "description": "", "operationId": "DL-FI-importPipeline", "tags": [ "Pipelines" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineInputObject" } } } }, "responses": { "200": { "$ref": "#/components/responses/200PipelineObject" }, "400": { "$ref": "#/components/responses/400Any" } } } }, "/v1/pipeline/pipelines/id-only": { "get": { "summary": "List Pipeline IDs", "description": "", "operationId": "DL-FI-listAllPipelineIds", "tags": [ "Pipelines" ], "responses": { "200": { "$ref": "#/components/responses/200PipelineIdsList" } } } }, "/v1/pipeline/clusterPolicies/databricks": { "get": { "summary": "List Databricks Cluster Policies", "description": "Returns a list of platform-level Databricks cluster policies filtered by prefix 'ts-platform-policy-*'", "operationId": "DL-FI-listDatabricksClusterPolicies", "tags": [ "clusters", "databricks", "Pipelines" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DatabricksClusterPolicy" } } } } }, "400": { "$ref": "#/components/responses/400Any" }, "401": { "$ref": "#/components/responses/401Any" }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string" }, "message": { "type": "string" } } } } } } } } }, "/v1/pipeline/clusters/databricks": { "get": { "summary": "List Databricks Clusters", "description": "", "operationId": "DL-FI-listDatabricksClusters", "tags": [ "clusters", "databricks", "Pipelines" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DatabricksClusterObject" } } } } }, "401": { "$ref": "#/components/responses/401Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/pipeline/list": { "get": { "summary": "Paginate Through all Pipeline Details (Deprecated)", "description": "Lists all of the pipelines in a paginated list", "operationId": "DL-FI-listPipelinesWithPagination", "tags": [ "Pipelines" ], "parameters": [ { "name": "size", "in": "query", "description": "Number of pipelines to return", "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 100 } }, { "name": "from", "in": "query", "description": "Page number to start from (0-indexed)", "schema": { "type": "integer", "minimum": 0, "default": 0 } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "size": { "type": "integer" }, "hasNext": { "type": "boolean" }, "from": { "type": "integer" }, "hits": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineOutputObject" } } } } } } }, "400": { "$ref": "#/components/responses/400Any" } } } }, "/v1/organizations/{organizationId}/users": { "post": { "description": "Add a new user to the organization or invite existing users. Assigns default roles and sends invitation emails as configured.", "operationId": "DL-FI-postApiV1OrganizationsOrganizationidUsers", "summary": "Add a user to Organization", "tags": [ "Organizations" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/parameters/0" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "firstName": { "type": "string", "maxLength": 100 }, "lastName": { "type": "string" }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "role": { "type": "string", "enum": [ "admin", "member", "readonly" ] }, "password": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "inactive", "locked" ], "default": "active" }, "authType": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/authType" } } } } } }, "responses": { "201": { "description": "Added new user.", "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "authType": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/authType" }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "firstName": { "type": "string", "example": "John" }, "lastName": { "type": "string", "example": "Doe" }, "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "lastActivity": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "systemRole": { "type": "string" }, "roles": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/post/responses/201/content/application~1json/schema/allOf/0/properties/status" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } }, { "type": "object", "properties": { "tokens": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "token": { "type": "string", "description": "Truncated token value" }, "expiresAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "createdAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "createdBy": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "firstName": { "type": "string", "format": "John" }, "lastName": { "type": "string", "format": "Snow" } } } } } }, "password_history": { "type": "array", "items": { "type": "object" } }, "athenaCredentialsUpdatedAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" } } }, { "type": "object", "properties": { "preferences": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/get/responses/200/content/application~1json/schema/items/allOf/2/properties/preferences" }, "rowPreferences": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/get/responses/200/content/application~1json/schema/items/allOf/2/properties/preferences" } } } ] } } } }, "400": { "description": "Bad request, details in response.", "content": { "text/plain": { "schema": { "type": "string" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } }, "get": { "description": "List all users within an organization including their roles, status, last activity, and access permissions for administrative oversight.", "summary": "Get Users for Organization", "tags": [ "Organizations" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/parameters/0" }, { "name": "userStatus", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "active", "inactive", "locked" ], "example": "active" } }, { "name": "role", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "admin", "member", "readonly" ], "example": "service" } }, { "name": "roleId", "required": true, "in": "query", "schema": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } }, { "name": "authType", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "password", "service" ], "example": "service" } }, { "name": "from", "required": false, "in": "query", "schema": { "type": "number" } }, { "name": "size", "required": false, "in": "query", "schema": { "type": "number" } }, { "name": "email", "required": false, "description": "Email address of the user (exact match)", "in": "query", "schema": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" } }, { "name": "firstName", "required": false, "in": "query", "description": "Exact match on user first name", "schema": { "type": "string" } }, { "name": "lastName", "required": false, "description": "Exact match on user last name", "in": "query", "schema": { "type": "string" } }, { "name": "include", "required": false, "in": "query", "schema": { "type": "array", "items": { "type": "string", "enum": [ "connector-users", "task-script-users" ] } } }, { "name": "withCredentials", "required": false, "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Responding with list of users", "content": { "application/json": { "schema": { "type": "array", "items": { "allOf": [ { "type": "object", "properties": { "authType": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/authType" }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "firstName": { "type": "string", "example": "John" }, "lastName": { "type": "string", "example": "Doe" }, "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "lastActivity": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "systemRole": { "type": "string" }, "roles": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/get/responses/200/content/application~1json/schema/items/allOf/0/properties/status" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } }, { "type": "object", "properties": { "tokens": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "token": { "type": "string", "description": "Truncated token value" }, "expiresAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "createdAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "createdBy": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "firstName": { "type": "string", "format": "John" }, "lastName": { "type": "string", "format": "Snow" } } } } } }, "password_history": { "type": "array", "items": { "type": "object" } }, "athenaCredentialsUpdatedAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" } } }, { "type": "object", "properties": { "preferences": { "type": "array", "items": {} }, "rowPreferences": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/get/responses/200/content/application~1json/schema/items/allOf/2/properties/preferences" } } } ] } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } } }, "/v1/dataapps/apps/{id}/logs/download": { "get": { "summary": "Download container logs for a specific data app", "tags": [ "Data Apps" ], "operationId": "download-container-logs", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "since", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "30s", "10m", "30m", "1h", "12h", "1d", "3d", "1w" ], "default": "12h" }, "description": "Relative time range for logs (30s, 10m, 30m, 1h, 12h, 1d, 3d, 1w for download)" } ], "responses": { "200": { "description": "OK - Log file download", "content": { "text/plain": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request" }, "403": { "description": "Access Denied" }, "404": { "description": "Not Found" }, "500": { "description": "Internal Server Error" } } } }, "/v1/dataapps/data/executeDML": { "post": { "summary": "Execute a DML query on external or lakehouse schemas", "tags": [ "Data Apps" ], "operationId": "execute-dml-query", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExecuteDMLRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DMLResult" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/v1/dataapps/apps": { "get": { "summary": "List installed Data Apps", "description": "Retrieves a paginated list of Data Apps currently installed in your organization. Supports filtering by type, labels, and search term.", "tags": [ "Data Apps" ], "operationId": "fetch-all-data-apps", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10, "minimum": 1, "maximum": 100 }, "description": "Maximum number of items to return" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "minimum": 1 }, "description": "Page number for pagination (starts from 1)" }, { "name": "includeLabels", "in": "query", "required": false, "schema": { "type": "boolean", "default": true }, "description": "Include labels for each data app" }, { "name": "labelKey", "in": "query", "required": false, "schema": { "type": "string", "minLength": 1 }, "description": "Filter data apps by label key" }, { "name": "labelValue", "in": "query", "required": false, "schema": { "type": "string", "minLength": 1 }, "description": "Filter data apps by label value (requires labelKey)" }, { "name": "type", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "CONNECTED", "CONTAINER" ] }, "description": "Filter data apps by type (CONNECTED or CONTAINER)" }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string", "minLength": 1, "maxLength": 100 }, "description": "Search term to filter data apps by name, description, or slug" }, { "name": "sort", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "name", "type" ], "default": "name" }, "description": "Field to sort results by" }, { "name": "sortDirection", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "asc", "desc" ], "default": "asc" }, "description": "Sort direction (asc or desc)" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedDataApp" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "503": { "description": "Service Unavailable" } } } }, "/v1/dataapps/apps/container/{id}": { "get": { "summary": "Fetch container data app by connector or data app ID", "tags": [ "Data Apps" ], "operationId": "fetch-container-data-app", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataApp" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" }, "503": { "description": "Service Unavailable" } } } }, "/v1/dataapps/apps/{id}/logs": { "get": { "summary": "Fetch container logs for a specific data app", "tags": [ "Data Apps" ], "operationId": "fetch-container-logs", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "mode", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "time", "count" ], "default": "time" }, "description": "Log fetch mode: \"time\" for time-based, \"count\" for last N messages" }, { "name": "since", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "30s", "10m", "30m", "1h", "12h", "1d", "3d", "1w" ], "default": "1h" }, "description": "Relative time range for logs (30s, 10m, 30m, 1h, 12h, 1d, 3d, 1w). Used when mode=time" }, { "name": "count", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 10000 }, "description": "Number of most recent log messages to return. Used when mode=count" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 10000 }, "description": "Maximum number of log events per request (for pagination)" }, { "name": "nextToken", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Token for pagination" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "integer" }, "data": { "type": "array", "items": { "type": "object" } }, "nextToken": { "type": "string" }, "searchedLogStreams": { "type": "array", "items": { "type": "string" } } } } } } }, "400": { "description": "Bad Request" }, "403": { "description": "Access Denied" }, "404": { "description": "Not Found" }, "500": { "description": "Internal Server Error" } } } }, "/v1/dataapps/apps/{id}": { "get": { "summary": "Get Data App details", "description": "Retrieves complete details of a single installed Data App, including metadata, deployment configuration, platform requirements, assigned labels, and associated providers.", "tags": [ "Data Apps" ], "operationId": "fetch-data-app-by-id", "parameters": [ { "name": "id", "in": "path", "required": true, "description": "Data App ID", "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataApp" } } } }, "400": { "description": "Bad Request" }, "404": { "description": "Not Found" } } } }, "/v1/dataapps/providers/templates": { "get": { "summary": "Fetch all data app provider templates", "tags": [ "Data App Providers" ], "operationId": "fetch-data-app-provider-templates", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DataAppProviderTemplate" } } } } }, "400": { "description": "Bad Request" }, "503": { "description": "Service Unavailable" } } } }, "/v1/dataapps/data/fetchDMLResult": { "get": { "summary": "Fetch next chunk for an executed DML statement", "tags": [ "Data Apps" ], "operationId": "fetch-dml-result", "parameters": [ { "name": "statementId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "chunkIndex", "in": "query", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DMLResultChunk" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/v1/commands/{id}/history": { "get": { "summary": "Get command history", "description": "Use this endpoint to obtain all the changes of a given command. It should return all status changes including who made the change and when the change was made.", "tags": [ "Commands" ], "operationId": "get-command-history", "parameters": [ { "name": "id", "in": "path", "description": "Command id", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"id\": \"57ebb02f-81d6-4627-8248-6c24c2d61323\",\n \"history\": [\n {\n \"id\": \"14da67ba-57fc-45ea-8621-09a8466a3f15\",\n \"commandId\": \"57ebb02f-81d6-4627-8248-6c24c2d61323\",\n \"reason\": \"Command created\",\n \"updatedBy\": \"platform\",\n \"updatedAt\": \"2021-01-12T10:14:14.512Z\"\n },\n {\n \"id\": \"50f1e195-8c19-4df6-94bb-75540deee23b\",\n \"commandId\": \"57ebb02f-81d6-4627-8248-6c24c2d61323\",\n \"reason\": \"Status update to PENDING\",\n \"updatedBy\": \"platform\",\n \"updatedAt\": \"2021-01-12T10:14:14.543Z\"\n },\n {\n \"id\": \"ccb8e962-78fe-43a6-814d-6c27cf62d456\",\n \"commandId\": \"57ebb02f-81d6-4627-8248-6c24c2d61323\",\n \"reason\": \"Command status changed to PROCESSING\",\n \"updatedBy\": \"target\",\n \"updatedAt\": \"2021-01-12T10:14:16.184Z\"\n },\n {\n \"id\": \"5c5abc92-3c37-4312-943e-a78f9016280d\",\n \"commandId\": \"57ebb02f-81d6-4627-8248-6c24c2d61323\",\n \"reason\": \"Command status changed to SUCCESS\",\n \"updatedBy\": \"target\",\n \"updatedAt\": \"2021-01-12T10:14:18.054Z\"\n }\n ]\n}" } }, "schema": { "type": "object", "properties": { "id": { "type": "string", "example": "57ebb02f-81d6-4627-8248-6c24c2d61323" }, "history": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "example": "14da67ba-57fc-45ea-8621-09a8466a3f15" }, "commandId": { "type": "string", "example": "57ebb02f-81d6-4627-8248-6c24c2d61323" }, "reason": { "type": "string", "example": "Command created" }, "updatedBy": { "type": "string", "example": "platform" }, "updatedAt": { "type": "string", "example": "2021-01-12T10:14:14.512Z" } } } } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Command with given ID 57ebb02f-81d6-4627-8248-6c24c2d61324 does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Command with given ID 57ebb02f-81d6-4627-8248-6c24c2d61324 does not exist" } } } } } }, "500": { "description": "500", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 500,\n \"error\": \"Internal Server Error\",\n \"message\": \"An internal server error occurred\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 500, "default": 0 }, "error": { "type": "string", "example": "Internal Server Error" }, "message": { "type": "string", "example": "An internal server error occurred" } } } } } } }, "deprecated": false } }, "/v1/commands/{id}": { "get": { "summary": "Get one command", "description": "Use this endpoint to obtain all the details for one single command. You will need to supply the command id as the path variable. This endpoint returns details like the command id, creation time, expiration time, the action, actual request body, and more.", "tags": [ "Commands" ], "operationId": "get-one-command", "parameters": [ { "name": "id", "in": "path", "description": "Command ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"id\": \"d3b63076-02db-4d36-9cea-39fa32f52647\",\n \"orgSlug\": \"mgtest\",\n \"targetId\": \"9154b6c4-0fab-4544-b9c3-c203983e7be6\",\n \"action\": \"TetraScience.Connector.gdc.HttpRequest\",\n \"expiresAt\": \"2020-12-30T23:58:43.749Z\",\n \"metadata\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\"\n },\n \"status\": \"ERROR\",\n \"requestBody\": {\n \"body\": {\n \"url\": \"https://jsonplaceholder.typicode.com/posts/1\",\n \"body\": {\n \"raw\": \"{ \\\"title\\\": \\\"foo\\\", \\\"body\\\": \\\"bar\\\", \\\"userId\\\": 1 }\",\n \"mode\": \"raw\"\n },\n \"method\": \"POST\",\n \"headers\": [],\n \"ignore_tls_certificate\": true\n },\n \"action\": \"TetraScience.Connector.gdc.HttpRequest\",\n \"targetId\": \"9154b6c4-0fab-4544-b9c3-c203983e7be6\",\n \"commandId\": \"d3b63076-02db-4d36-9cea-39fa32f52647\",\n \"createdAt\": \"2020-12-27T17:04:00.500Z\",\n \"expiresAt\": \"2020-12-30T23:58:43.749Z\"\n },\n \"responseBody\": {\n \"body\": \"{\\\"message\\\":\\\"Request failed with status code 404\\\"}\"\n },\n \"requestPayloadDelivery\": \"embedded\",\n \"createdByEntity\": null,\n \"createdBy\": \"59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd\",\n \"createdAt\": \"2020-12-27T17:04:00.500Z\",\n \"updatedAt\": \"2020-12-27T17:04:02.721Z\"\n}" } }, "schema": { "type": "object", "properties": { "id": { "type": "string", "example": "d3b63076-02db-4d36-9cea-39fa32f52647" }, "orgSlug": { "type": "string", "example": "mgtest" }, "targetId": { "type": "string", "example": "9154b6c4-0fab-4544-b9c3-c203983e7be6" }, "action": { "type": "string", "example": "TetraScience.Connector.gdc.HttpRequest" }, "expiresAt": { "type": "string", "example": "2020-12-30T23:58:43.749Z" }, "metadata": { "type": "object", "properties": { "key1": { "type": "string", "example": "value1" }, "key2": { "type": "string", "example": "value2" } } }, "status": { "type": "string", "example": "ERROR" }, "requestBody": { "type": "object", "properties": { "body": { "type": "object", "properties": { "url": { "type": "string", "example": "https://jsonplaceholder.typicode.com/posts/1" }, "body": { "type": "object", "properties": { "raw": { "type": "string", "example": "{ \"title\": \"foo\", \"body\": \"bar\", \"userId\": 1 }" }, "mode": { "type": "string", "example": "raw" } } }, "method": { "type": "string", "example": "POST" }, "headers": { "type": "array" }, "ignore_tls_certificate": { "type": "boolean", "example": true, "default": true } } }, "action": { "type": "string", "example": "TetraScience.Connector.gdc.HttpRequest" }, "targetId": { "type": "string", "example": "9154b6c4-0fab-4544-b9c3-c203983e7be6" }, "commandId": { "type": "string", "example": "d3b63076-02db-4d36-9cea-39fa32f52647" }, "createdAt": { "type": "string", "example": "2020-12-27T17:04:00.500Z" }, "expiresAt": { "type": "string", "example": "2020-12-30T23:58:43.749Z" } } }, "responseBody": { "type": "object", "properties": { "body": { "type": "string", "example": "{\"message\":\"Request failed with status code 404\"}" } } }, "createdByEntity": {}, "requestPayloadDelivery": { "type": "string", "enum": [ "embedded", "referenced" ], "example": "embedded" }, "createdBy": { "type": "string", "example": "59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd" }, "createdAt": { "type": "string", "example": "2020-12-27T17:04:00.500Z" }, "updatedAt": { "type": "string", "example": "2020-12-27T17:04:02.721Z" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Command with ID d3b63076-02db-4d36-9cea-39fa32f52648 not found\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Command with ID d3b63076-02db-4d36-9cea-39fa32f52648 not found" } } } } } }, "500": { "description": "500", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 500,\n \"error\": \"Internal Server Error\",\n \"message\": \"An internal server error occurred\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 500, "default": 0 }, "error": { "type": "string", "example": "Internal Server Error" }, "message": { "type": "string", "example": "An internal server error occurred" } } } } } } }, "deprecated": false } }, "/audit-trail": { "get": { "tags": [ "Audit Trail" ], "summary": "Get audit logs (Paginated)", "description": "Returns a paginated object of audit logs.", "parameters": [ { "name": "actor", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "entityName", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "entity", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "action", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "ids", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "id", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "changeReason", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "from", "in": "query", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "to", "in": "query", "required": true, "schema": { "$ref": "#/paths/~1audit-trail/get/parameters/7/schema" } }, { "name": "take", "in": "query", "required": false, "schema": { "type": "number", "minimum": 1 } }, { "name": "skip", "in": "query", "required": false, "schema": { "type": "number", "minimum": 0 } }, { "name": "format", "in": "query", "required": false, "schema": { "type": "string", "default": "json", "enum": [ "json", "csv" ] } } ], "responses": { "200": { "description": "Complex object containing audit logs and paging information.", "content": { "application/json": { "schema": { "type": "object", "properties": { "skip": { "type": "number", "minimum": 0 }, "take": { "type": "number", "minimum": 1 }, "next": { "type": "boolean" }, "logs": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "orgSlug": { "type": "string", "example": "tetrascience" }, "ip": { "type": "string", "format": "ipv4" }, "createdAt": { "type": "string", "format": "date-time" }, "entity": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1audit-trail/get/responses/200/content/application~1json/schema/properties/logs/items/properties/id" }, "type": { "type": "string", "enum": [ "user", "file", "datahub-agent", "iot-source", "user-setting", "db-credentials", "feature-flag" ] }, "before": { "type": "object" }, "after": { "type": "object" }, "schemaVersion": { "type": "number", "minimum": 1 } } }, "action": { "type": "string", "enum": [ "create", "update", "delete", "enable", "disable", "unlock", "change-role", "change-password", "login-attempt", "copy", "change-default-role", "reset-password", "forgot-password-request", "expired-token" ] }, "actor": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1audit-trail/get/responses/200/content/application~1json/schema/properties/logs/items/properties/id" }, "type": { "type": "string", "enum": [ "user", "service-user", "local-user" ] }, "name": { "type": "string", "example": "Administrator" }, "email": { "type": "string", "format": "email" } } }, "authToken": { "type": "object", "properties": { "ending": { "type": "string" } } } } } } } } }, "text/csv": { "schema": { "type": "string", "example": "id,org_slug,actor_id,actor_type,actor_name,actor_email,ip_address,host,auth_token_ending,entity_type,entity_id,action,before,after,change_reason,entity_schema_version,created_at,entity_name\ne7917f3c-330a-4f56-8218-a8f018e09bfc,tetrascience,59eb8bd4-8b10-43b3-ac57-fe3ab86c05fd,user,Administrator Administrator,admin@tetrascience.com,178.127.44.13,,w7AY9Uc,service-user,6a7e3a44-4f7a-42dc-b728-75ddfb548339,enable,\"{\"\"id\"\": \"\"6a7e3a44-4f7a-42dc-b728-75ddfb548339\"\", \"\"name\"\": \"\"Connector 2b50b737-df0d-4a90-9962-cd6b8df6ffdb\"\", \"\"type\"\": \"\"service-user\"\", \"\"email\"\": \"\"ts-service-user.6a7e3a44-4f7a-42dc-b728-75ddfb548339@tetrascience.com\"\", \"\"status\"\": \"\"inactive\"\"}\",\"{\"\"id\"\": \"\"6a7e3a44-4f7a-42dc-b728-75ddfb548339\"\", \"\"name\"\": \"\"Connector 2b50b737-df0d-4a90-9962-cd6b8df6ffdb\"\", \"\"type\"\": \"\"service-user\"\", \"\"email\"\": \"\"ts-service-user.6a7e3a44-4f7a-42dc-b728-75ddfb548339@tetrascience.com\"\", \"\"status\"\": \"\"active\"\"}\",,1,2023-04-19 12:05:02.42+00,Connector 2b50b737-df0d-4a90-9962-cd6b8df6ffdb\n" } } } } } } }, "/login/config": { "get": { "summary": "Get login config", "description": "Retrieve global login configuration including SSO availability, configured identity providers, and platform features. Use this to check if SSO is enabled and which identity providers are configured.", "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Successfully fetched login config", "content": { "application/json": { "schema": { "type": "object", "properties": { "ssoEnabled": { "type": "boolean" }, "ssoProviders": { "type": "array", "items": { "type": "object", "properties": { "providerName": { "type": "string" }, "authorizationUrl": { "type": "string" }, "defaultIdp": { "type": "boolean" } } } }, "features": { "type": "string" } } } } } }, "401": { "description": "Not authorized" } } } }, "/login/sso": { "get": { "summary": "SSO login", "description": "Authenticate users via Single Sign-On (SSO) using an authorization code from an identity provider. Use this for SSO login flows to obtain user tokens for API access.", "parameters": [ { "name": "code", "in": "query", "required": true, "schema": { "type": "string" } } ], "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Login Successful", "content": { "application/json": { "schema": { "$ref": "#/paths/~1login/post/responses/200/content/application~1json/schema" } } } }, "400": { "description": "SSO not allowed" }, "401": { "description": "Not authorized" } } } }, "/{subdomain}/login/config": { "get": { "summary": "Get login config (Subdomain based)", "description": "Get tenant-specific login configuration for a subdomain including SSO availability, configured identity providers, and tenant features.", "parameters": [ { "name": "subdomain", "in": "path", "required": true, "schema": { "type": "string", "example": "tetrascience", "pattern": "^[0-9a-z][0-9a-z-]*$" } } ], "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Successfully fetched login config", "content": { "application/json": { "schema": { "$ref": "#/paths/~1login~1config/get/responses/200/content/application~1json/schema" } } } }, "401": { "description": "Not authorized" } } } }, "/{subdomain}/login/sso": { "get": { "summary": "SSO login (Subdomain based)", "parameters": [ { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0" }, { "$ref": "#/paths/~1login~1sso/get/parameters/0" } ], "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Login Successful", "content": { "application/json": { "schema": { "$ref": "#/paths/~1login/post/responses/200/content/application~1json/schema" } } } }, "400": { "description": "SSO not allowed" }, "401": { "description": "Not authorized" } } } }, "/v1/accessGroups": { "get": { "summary": "List Access Groups for an Organization", "description": "Get a list of all [access groups](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization) for an organization.", "tags": [ "Access Groups" ], "responses": { "200": { "description": "List all of an organization's access groups.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AccessGroupSummary" } } } } } } }, "post": { "summary": "Create a New Access Group", "description": "Create a new [access group](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization).", "tags": [ "Access Groups" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUpdateAccessGroup" } } } }, "responses": { "201": { "description": "The newly created group.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessGroup" } } } } } } }, "/v1/accessGroups/user/{id}": { "get": { "summary": "List Access Groups that a User Belongs To", "description": "Get a list of all [access groups](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization) that a user belongs to.", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "A list of groups that the user is in.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AccessGroupSummary" } } } } } } } }, "/v1/organizations/{organizationId}": { "get": { "description": "Retrieve organization details including settings, features, subdomain, and administrative configuration for management purposes.", "summary": "Get organization by ID", "tags": [ "Organizations" ], "parameters": [ { "name": "organizationId", "required": true, "in": "path", "schema": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } ], "responses": { "200": { "description": "Responding with Organization details", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "createdAt": { "type": "string", "format": "date-time" }, "createdBy": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "features": { "type": "object", "properties": { "ssoGroupMapping": { "type": "object", "properties": { "admin": { "type": "array", "items": { "type": "string" } }, "member": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/features/properties/ssoGroupMapping/properties/admin" }, "readonly": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/features/properties/ssoGroupMapping/properties/admin" } } }, "auditTrail": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "changeReasonEnabled": { "type": "boolean" } } }, "continuousVerification": { "type": "object", "properties": { "enabled": { "type": "boolean" } } } } }, "modifiedAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "modifiedBy": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "name": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "subDomain": { "type": "string" }, "type": { "type": "string" } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Organization not found." } } }, "put": { "description": "Update organization properties including name, description, logo, authentication type, email domain, and feature settings. Requires organization or system admin privileges.", "summary": "Update organization by ID", "tags": [ "Organizations" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/parameters/0" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "name": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "emailDomain": { "type": "string" }, "authType": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/authType" }, "description": { "type": "string" }, "logo": { "type": "string" }, "features": { "type": "object", "properties": { "ssoGroupMapping": { "type": "object", "properties": { "admin": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/features/properties/ssoGroupMapping/properties/admin" }, "member": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/features/properties/ssoGroupMapping/properties/admin" }, "readonly": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/features/properties/ssoGroupMapping/properties/admin" } } }, "auditTrail": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "changeReasonEnabled": { "type": "boolean" } } }, "continuousVerification": { "type": "object", "properties": { "enabled": { "type": "boolean" } } } } }, "tenantId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } }, "required": [ "orgSlug", "name", "emailDomain" ] } } } }, "responses": { "200": { "description": "Responding with Organization details", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Organization not found." } } } }, "/v1/roles/policies": { "get": { "summary": "Get all policies supported in the system", "tags": [ "Roles" ], "responses": { "200": { "description": "Responding with list of policies", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "example": "Developer" }, "scope": { "type": "string", "enum": [ "developer", "dataUser", "dataOwner", "auditor", "analyst", "tenantAdmin", "orgAdmin", "member", "support" ], "example": "developer" } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } } }, "/v1/roles/{roleId}/users": { "get": { "summary": "Get users with the role", "tags": [ "Roles" ], "parameters": [ { "$ref": "#/paths/~1v1~1roles~1%7BroleId%7D/get/parameters/0" }, { "name": "pageNumber", "description": "Page number", "in": "query", "required": false, "schema": { "type": "number", "default": 1, "minimum": 1 } }, { "name": "pageSize", "description": "Page size", "in": "query", "required": false, "schema": { "type": "number", "default": 25, "minimum": 1 } } ], "responses": { "200": { "description": "Responding with list of users", "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "total": { "type": "number", "example": 100 }, "count": { "type": "number", "example": 25 } } }, { "type": "object", "properties": { "users": { "type": "array", "items": { "type": "object", "properties": { "authType": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/authType" }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "firstName": { "type": "string", "example": "John" }, "lastName": { "type": "string", "example": "Doe" }, "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "lastActivity": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "systemRole": { "type": "string" }, "roles": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "$ref": "#/paths/~1v1~1roles~1%7BroleId%7D~1users/get/responses/200/content/application~1json/schema/allOf/1/properties/users/items/properties/status" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } } } } } ] } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Role not found" } } }, "post": { "summary": "Add / remove users to role", "tags": [ "Roles" ], "parameters": [ { "$ref": "#/paths/~1v1~1roles~1%7BroleId%7D/get/parameters/0" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "userIdsToAdd": { "type": "array", "items": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } }, "userIdsToRemove": { "type": "array", "items": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } } } } } }, "responses": { "204": { "description": "Users added / removed from role successfully" }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Role not found" } } } }, "/v1/roles": { "get": { "summary": "List all roles in an organization", "tags": [ "Roles" ], "responses": { "200": { "description": "Responding with list of roles", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "name": { "type": "string" }, "description": { "type": "string" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "ssoGroupMappings": { "type": "array", "items": { "type": "string", "example": "idp-group-name" } }, "enabled": { "type": "boolean" }, "createdAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "policyScopes": { "type": "array", "items": { "type": "string", "enum": [ "developer", "dataUser", "dataOwner", "auditor", "analyst", "tenantAdmin", "orgAdmin", "member", "support" ], "example": "developer" } } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Organization not found" } } }, "post": { "summary": "Create a new role in an organization", "tags": [ "Roles" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "ssoGroupMappings": { "type": "array", "items": { "type": "string", "example": "idp-group-name" } }, "enabled": { "type": "boolean" }, "policyScopes": { "type": "array", "minimum": 1, "items": { "type": "string", "enum": [ "developer", "dataUser", "dataOwner", "auditor", "analyst", "tenantAdmin", "orgAdmin", "member", "support" ], "example": "developer" } } } } } } }, "responses": { "201": { "description": "Responding with created role", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "name": { "type": "string" }, "description": { "type": "string" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "ssoGroupMappings": { "type": "array", "items": { "type": "string", "example": "idp-group-name" } }, "enabled": { "type": "boolean" }, "createdAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" }, "policyScopes": { "type": "array", "items": { "type": "string", "enum": [ "developer", "dataUser", "dataOwner", "auditor", "analyst", "tenantAdmin", "orgAdmin", "member", "support" ], "example": "developer" } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Organization not found" } } } }, "/v1/tenants/{tenantId}/organizations": { "get": { "description": "Get all organizations in a tenant, needs to be system admin.", "tags": [ "Tenants" ], "summary": "Get all organizations in a tenant", "parameters": [ { "$ref": "#/paths/~1v1~1tenants~1%7BtenantId%7D/get/parameters/0" } ], "responses": { "200": { "description": "Successful", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "name": { "type": "string" } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } } }, "/v1/tenants/{tenantId}/users": { "get": { "description": "Get all users in a tenant, needs to be org or system admin.", "tags": [ "Tenants" ], "summary": "Get all users in a tenant", "parameters": [ { "$ref": "#/paths/~1v1~1tenants~1%7BtenantId%7D/get/parameters/0" }, { "name": "email", "required": false, "description": "Optional email parameter for filtering users", "in": "query", "schema": { "type": "string", "minLength": 3 } } ], "responses": { "200": { "description": "Successful", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "firstName": { "type": "string", "example": "John" }, "lastName": { "type": "string", "example": "Doe" }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "status": { "type": "string", "enum": [ "active", "inactive" ] } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } } }, "/v1/tenants/{tenantId}": { "get": { "description": "Get tenant by ID, needs to be org or system admin.", "tags": [ "Tenants" ], "summary": "Get tenant information", "parameters": [ { "name": "tenantId", "required": true, "in": "path", "schema": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } ], "responses": { "200": { "description": "Successful", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1tenants/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } }, "put": { "description": "Update tenant by ID, needs to be system admin.", "tags": [ "Tenants" ], "summary": "Update tenant information", "parameters": [ { "$ref": "#/paths/~1v1~1tenants~1%7BtenantId%7D/get/parameters/0" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "disclaimer": { "type": "string" }, "refreshTokenExpiration": { "type": "number" }, "authTokenExpiration": { "type": "number" }, "idleTimeout": { "type": "number" }, "continuousVerificationEnabled": { "type": "boolean" }, "ssoEnabled": { "type": "boolean" }, "defaultIdp": { "type": "string" }, "idpConfigs": { "type": "array", "items": { "type": "object", "properties": { "ssoMetadataUrl": { "type": "string" }, "ssoMetadataXml": { "type": "string" }, "ssoProvider": { "type": "string" }, "ssoEmailFieldMapping": { "type": "string" }, "ssoFirstNameFieldMapping": { "type": "string" }, "ssoLastNameFieldMapping": { "type": "string" }, "ssoGroupsFieldMapping": { "type": "string" } }, "required": [ "ssoProvider", "ssoEmailFieldMapping", "ssoFirstNameFieldMapping", "ssoLastNameFieldMapping", "ssoGroupsFieldMapping" ], "anyOf": [ { "required": [ "ssoMetadataUrl" ] }, { "required": [ "ssoMetadataXml" ] } ] } }, "passwordExpiryDays": { "type": "number" }, "passwordComplexity": { "type": "boolean" }, "noPasswordReuse": { "type": "boolean" }, "passwordExpiry": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "Successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/paths/~1v1~1tenants/post/responses/201/content/application~1json/schema" } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } } }, "/v1/tenants": { "get": { "description": "Get all tenants, needs to be system admin.", "tags": [ "Tenants" ], "summary": "Get list of tenants", "parameters": [ { "name": "subdomain", "required": false, "description": "Optional parameter to return a tenant by subdomain", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "name": { "type": "string" }, "subdomain": { "type": "string" }, "createdBy": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "modifiedBy": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "organizations": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "name": { "type": "string" }, "emailDomain": { "type": "string" }, "tenantId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } } } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" } } }, "post": { "description": "Create a new tenant, must be system admin.", "tags": [ "Tenants" ], "summary": "Create a new tenant.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "disclaimer": { "type": "string" }, "refreshTokenExpiration": { "type": "number" }, "authTokenExpiration": { "type": "number" }, "idleTimeout": { "type": "number" }, "continuousVerificationEnabled": { "type": "boolean" }, "ssoEnabled": { "type": "boolean" }, "defaultIdp": { "type": "string" }, "idpConfigs": { "type": "array", "items": { "type": "object", "properties": { "ssoMetadataUrl": { "type": "string" }, "ssoMetadataXml": { "type": "string" }, "ssoProvider": { "type": "string" }, "ssoEmailFieldMapping": { "type": "string" }, "ssoFirstNameFieldMapping": { "type": "string" }, "ssoLastNameFieldMapping": { "type": "string" }, "ssoGroupsFieldMapping": { "type": "string" } }, "required": [ "ssoProvider", "ssoEmailFieldMapping", "ssoFirstNameFieldMapping", "ssoLastNameFieldMapping", "ssoGroupsFieldMapping" ], "anyOf": [ { "required": [ "ssoMetadataUrl" ] }, { "required": [ "ssoMetadataXml" ] } ] } }, "passwordExpiryDays": { "type": "number" }, "passwordComplexity": { "type": "boolean" }, "noPasswordReuse": { "type": "boolean" }, "passwordExpiry": { "type": "boolean" } } }, { "type": "object", "properties": { "subdomain": { "type": "string", "minLength": 3, "maxLength": 22 } }, "required": [ "subdomain" ] } ] } } } }, "responses": { "201": { "description": "Successfully created tenant.", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "name": { "type": "string" }, "subdomain": { "type": "string" }, "disclaimer": { "type": "string" }, "features": { "type": "object" }, "settings": { "type": "object", "properties": { "ssoEnabled": { "type": "boolean" }, "defaultIdp": { "type": "string" }, "namedUserClientId": { "type": "string" }, "namedUserClientSecret": { "type": "string" }, "ssoDomain": { "type": "string" }, "ssoRedirectUri": { "type": "string" }, "authTokenExpiration": { "description": "Value in a minute. Default=240. min=1, max=720", "type": "string" }, "refreshTokenExpiration": { "description": "Value in a minute. Default=720. min=1, max=720", "type": "string" }, "idleTimeout": { "type": "string", "description": "Value in a minute. Default=60. min=1, max=720" }, "resetPassword": { "type": "string" }, "passwordComplexity": { "type": "string" }, "passwordExpiryDays": { "type": "integer" }, "passwordExpiry": { "type": "boolean" }, "accountLock": { "type": "boolean" }, "maxFailedLogins": { "type": "integer" }, "noPasswordReuse": { "type": "boolean" }, "idpConfigs": { "type": "array", "items": { "type": "object", "properties": { "ssoMetadataUrl": { "type": "string" }, "ssoMetadataXml": { "type": "string" }, "ssoProvider": { "type": "string" }, "ssoEmailFieldMapping": { "type": "string" }, "ssoFirstNameFieldMapping": { "type": "string" }, "ssoLastNameFieldMapping": { "type": "string" }, "ssoGroupsFieldMapping": { "type": "string" } }, "required": [ "ssoProvider", "ssoEmailFieldMapping", "ssoFirstNameFieldMapping", "ssoLastNameFieldMapping", "ssoGroupsFieldMapping" ], "anyOf": [ { "required": [ "ssoMetadataUrl" ] }, { "required": [ "ssoMetadataXml" ] } ] } } } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "409": { "description": "Bad request, Tenant already exists." } } } }, "/v1/users/me": { "get": { "summary": "Get current user details", "tags": [ "Users" ], "responses": { "200": { "description": "Responding with user details", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/users/{userId}/roles": { "get": { "summary": "Get user roles in the organization matching the orgSlug", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "responses": { "200": { "description": "Responding with user roles", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1users~1%7BuserId%7D~1status/put/responses/200/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } }, "post": { "summary": "Add new roles for a user", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "roleIds": { "type": "array", "items": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } } } } } }, "responses": { "200": { "description": "Responding with user roles", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1users~1me~1organizations/post/responses/200/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } }, "put": { "summary": "Update the roles for a user", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1users~1%7BuserId%7D~1roles/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "Responding with updated list of user roles", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1users~1me~1organizations/post/responses/200/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/users/{userId}": { "get": { "summary": "Get user by ID", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "responses": { "200": { "description": "Responding with user details", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } }, "put": { "summary": "Update user by ID", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" } } } } } }, "responses": { "200": { "description": "Responding with user details", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/artifacts/ai-workflows/{namespace}": { "get": { "description": "Returns a list of all ai-workflow artifacts given a namespace", "summary": "List all ai-workflows for namespace", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200AiWorkflowObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ai-workflows/{namespace}/{slug}": { "get": { "description": "Returns a list of all ai-workflow artifacts given a namespace and slug", "summary": "List all ai-workflows for namespace/slug", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200AiWorkflowObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ai-workflows/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a ai-workflow file given a namespace, slug, version, and file slug", "summary": "Get contents for a ai-workflow file", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/AiWorkflowFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ai-workflows/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single ai-workflow artifact matching the namespace, slug, and version", "summary": "Get a single ai-workflow artifact", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200AiWorkflowObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ai-workflows/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this ai-workflow", "summary": "Get available file slugs for ai-workflow", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200AiWorkflowFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ai-workflows/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a ai-workflow artifact", "summary": "Get labels for a ai-workflow", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ai-workflows": { "get": { "description": "Returns a list of all ai-workflow artifacts, optionally filtered by namespace type", "summary": "List all ai-workflow artifacts", "tags": [ "ai-workflows" ], "operationId": "getAiWorkflowArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200AiWorkflowObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/externalevents/availableEventTypes": { "get": { "operationId": "getAllAvailableEventTypes", "tags": [ "Edit Subscriptions" ], "summary": "Get a list of all available event types for this org", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "eventTypes": { "type": "array", "items": { "$ref": "#/components/schemas/EventbridgeEventType" } } } } } } }, "500": { "description": "Cannot list available event types", "content": { "application/json": { "schema": {}, "example": { "error": "Internal Error", "message": "Cannot list available event types" } } } } } } }, "/v1/artifacts/connectors/{namespace}": { "get": { "description": "Returns a list of all Connector artifacts given a namespace", "summary": "List all Connectors for namespace", "tags": [ "connectors" ], "operationId": "getConnectorArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/{namespace}/{slug}": { "get": { "description": "Returns a list of all Connector artifacts given a namespace and slug", "summary": "Returns a list of Connector artifacts given a namespace and slug", "tags": [ "connectors" ], "operationId": "getConnectorArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for an Connector file given a namespace, slug, version, and file slug", "summary": "Get contents for an Connector file", "tags": [ "connectors" ], "operationId": "getConnectorArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/ConnectorFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single Connector artifact matching the namespace, slug, and version", "summary": "Get single Connector", "tags": [ "connectors" ], "operationId": "getConnectorArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this Connector", "summary": "Get available file slugs for Connector", "tags": [ "connectors" ], "operationId": "getConnectorArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a Connector artifact", "summary": "Get labels for an Connector", "tags": [ "connectors" ], "operationId": "getConnectorArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/{namespace}/{slug}/{version}/relationships": { "get": { "description": "Returns a list of the relationships a Connector artifact has with other artifacts", "summary": "Get artifacts related to Connector", "tags": [ "connectors" ], "operationId": "getConnectorArtifactRelationships", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Relationships" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors": { "get": { "description": "Returns a list of all Connector artifacts, optionally filtered by namespace type", "summary": "List all connectors artifacts", "tags": [ "connectors" ], "operationId": "getConnectorArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObjectList" } } } }, "/v1/artifacts/data-apps/{namespace}": { "get": { "description": "Returns a list of all Data App artifacts given a namespace", "summary": "List all Data Apps for namespace", "tags": [ "connectors" ], "operationId": "getDataAppArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps/{namespace}/{slug}": { "get": { "description": "Returns a list of all Data App artifacts given a namespace and slug", "summary": "Returns a list of Data App artifacts given a namespace and slug", "tags": [ "connectors" ], "operationId": "getDataAppArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for an Data App file given a namespace, slug, version, and file slug", "summary": "Get contents for a Data App file", "tags": [ "connectors" ], "operationId": "getDataAppArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/ConnectorFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single Data App artifact matching the namespace, slug, and version", "summary": "Get single Data App", "tags": [ "connectors" ], "operationId": "getDataAppArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this Data App", "summary": "Get available file slugs for Data App", "tags": [ "connectors" ], "operationId": "getDataAppArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a Data App artifact", "summary": "Get labels for a Data App", "tags": [ "connectors" ], "operationId": "getDataAppArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps/{namespace}/{slug}/{version}/relationships": { "get": { "description": "Returns a list of the relationships a Data App artifact has with other artifacts", "summary": "Get artifacts related to Data App", "tags": [ "connectors" ], "operationId": "getDataAppArtifactRelationships", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Relationships" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/data-apps": { "get": { "description": "Returns a list of all Connector artifacts that can be deployed as a data app, optionally filtered by namespace type", "summary": "List all connectors artifacts of sub-type data-app", "tags": [ "connectors" ], "operationId": "getDataAppArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ConnectorObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}": { "get": { "description": "Returns a list of all IDS artifacts given a namespace", "summary": "List all IDSes for namespace", "tags": [ "IDS" ], "operationId": "getIdsArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200IdsObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}/{slug}": { "get": { "description": "Returns a list of all IDS artifacts given a namespace and slug", "summary": "Returns a list of IDS artifacts given a namespace and slug", "tags": [ "IDS" ], "operationId": "getIdsArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200IdsObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for an IDS file given a namespace, slug, version, and file slug", "summary": "Get contents for an IDS file", "tags": [ "IDS" ], "operationId": "getIdsArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IdsFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single IDS artifact matching the namespace, slug, and version", "summary": "Get single IDS", "tags": [ "IDS" ], "operationId": "getIdsArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200IdsObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this IDS", "summary": "Get available file slugs for IDS", "tags": [ "Protocols" ], "operationId": "getIdsArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200IdsFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a IDS artifact", "summary": "Get labels for an IDS", "tags": [ "IDS" ], "operationId": "getIdsArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/{namespace}/{slug}/{version}/relationships": { "get": { "description": "Returns a list of the relationships a IDS artifact has with other artifacts", "summary": "Get artifacts related to IDS", "tags": [ "IDS" ], "operationId": "getIdsArtifactRelationships", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Relationships" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids": { "get": { "description": "Returns a list of all IDS artifacts, optionally filtered by namespace type", "summary": "List all ids artifacts", "tags": [ "IDS" ], "operationId": "getIdsArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200IdsObjectList" } } } }, "/v1/artifacts/lakehouse/{namespace}/{slug}": { "get": { "description": "Returns a list of all lakehouse artifacts given a namespace and slug", "summary": "List all lakehouse for namespace/slug", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200LakehouseObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/lakehouse/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a lakehouse file given a namespace, slug, version, and file slug", "summary": "Get contents for a lakehouse file", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/LakehouseFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/lakehouse/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single lakehouse artifact matching the namespace, slug, and version", "summary": "Get a single lakehouse artifact", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200LakehouseObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/lakehouse/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this lakehouse", "summary": "Get available file slugs for lakehouse", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200LakehouseFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/lakehouse/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a lakehouse artifact", "summary": "Get labels for a lakehouse", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/lakehouse": { "get": { "description": "Returns a list of all lakehouse artifacts, optionally filtered by namespace type", "summary": "List all lakehouse artifacts", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200LakehouseObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/lakehouse/{namespace}": { "get": { "description": "Returns a list of all lakehouse artifacts given a namespace", "summary": "List all lakehouse for namespace", "tags": [ "lakehouse" ], "operationId": "getLakehouseArtifactsByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200LakehouseObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}": { "get": { "description": "Returns a list of all protocol artifacts given a namespace", "summary": "List all protocols for namespace", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ProtocolObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}/{slug}": { "get": { "description": "Returns a list of all protocol artifacts given a namespace and slug", "summary": "List all protocols for namespace/slug", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ProtocolObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a protocol file given a namespace, slug, version, and file slug", "summary": "Get contents for a protocol file", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/ProtocolFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single protocol artifact matching the namespace, slug, and version", "summary": "Get single protocol", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ProtocolObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this protocol", "summary": "Get available file slugs for protocol", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ProtocolFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a protocol artifact", "summary": "Get labels for a protocol", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/{namespace}/{slug}/{version}/relationships": { "get": { "description": "Returns a list of the relationships a protocol artifact has with other artifacts", "summary": "Get related artifacts", "tags": [ "Protocols" ], "operationId": "getProtocolArtifactRelationships", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Relationships" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols": { "get": { "description": "Returns a list of all protocol artifacts, optionally filtered by namespace type", "summary": "List all protocols", "tags": [ "Protocols" ], "operationId": "getProtocolArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200ProtocolObjectList" } } } }, "/v1/externalevents/requests": { "get": { "operationId": "getRequests", "tags": [ "Requests" ], "summary": "Get recent requests", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" } } } }, "/v1/artifacts/schemas/{namespace}": { "get": { "description": "Returns a list of all schema artifacts given a namespace", "summary": "List all schemas for namespace", "tags": [ "schemas" ], "operationId": "getSchemaArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200SchemaObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/schemas/{namespace}/{slug}": { "get": { "description": "Returns a list of all schema artifacts given a namespace and slug", "summary": "List all schemas for namespace/slug", "tags": [ "schemas" ], "operationId": "getSchemaArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200SchemaObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/schemas/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a schemas file given a namespace, slug, version, and file slug", "summary": "Get contents for a schemas file", "tags": [ "schemas" ], "operationId": "getSchemaArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/SchemaFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/schemas/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single schemas artifact matching the namespace, slug, and version", "summary": "Get a single schemas artifact", "tags": [ "schemas" ], "operationId": "getSchemaArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200SchemaObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/schemas/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this schemas", "summary": "Get available file slugs for schemas", "tags": [ "schemas" ], "operationId": "getSchemaArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200SchemaFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/schemas/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a schemas artifact", "summary": "Get labels for a schemas", "tags": [ "schemas" ], "operationId": "getSchemaArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/schemas": { "get": { "description": "Returns a list of all schema artifacts, optionally filtered by namespace type", "summary": "List all schema artifacts", "tags": [ "schemas" ], "operationId": "getSchemaArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200SchemaObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/externalevents/subscriptions/{subscriptionId}": { "parameters": [ { "name": "subscriptionId", "in": "path", "required": true, "description": "ID of the subscription", "schema": { "type": "string" } } ], "get": { "operationId": "getSubscription", "tags": [ "View Subscriptions" ], "summary": "Get a subscription by ID", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeSubscriptionFull" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" }, "503": { "$ref": "#/components/responses/503Any" } } } }, "/v1/externalevents/subscriptions": { "get": { "operationId": "getSubscriptions", "tags": [ "View Subscriptions" ], "summary": "Get subscriptions for your org", "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EventbridgeSubscriptionFull" } } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" }, "503": { "$ref": "#/components/responses/503Any" } } } }, "/v1/artifacts/task-scripts/{namespace}": { "get": { "description": "Returns a list of all task-script artifacts given a namespace", "summary": "List all task-scripts for a namespace", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TaskScriptObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/{namespace}/{slug}": { "get": { "description": "Returns a list of all task-script artifacts given a namespace and slug", "summary": "List all task-scripts for a namespace/slug", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TaskScriptObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a task-script file given a namespace, slug, version, and file slug", "summary": "Get contents of a task-script file", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/TaskScriptFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single task-script artifact matching the namespace, slug, and version", "summary": "Get single task-script", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TaskScriptObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this task-script", "summary": "Get available file slugs for task-script", "tags": [ "Protocols" ], "operationId": "getTaskScriptArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TaskScriptFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a task-script artifact", "summary": "Get labels for a task-script", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/{namespace}/{slug}/{version}/relationships": { "get": { "description": "Returns a list of the relationships a task-script artifact has with other artifacts", "summary": "Get artifacts related to task-script", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifactRelationships", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Relationships" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts": { "get": { "description": "Returns a list of all task-script artifacts, optionally filtered by namespace type", "summary": "List all task-scripts", "tags": [ "Task Scripts" ], "operationId": "getTaskScriptArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TaskScriptObjectList" } } } }, "/v1/artifacts/tetraflows/{namespace}/{slug}": { "get": { "description": "Returns a list of all tetraflow artifacts given a namespace and slug", "summary": "List all tetraflow for namespace/slug", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetraflowObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraflows/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a tetraflow file given a namespace, slug, version, and file slug", "summary": "Get contents for a tetraflow file", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/TetraflowFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraflows/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single tetraflows artifact matching the namespace, slug, and version", "summary": "Get a single tetraflow artifact", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetraflowObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraflows/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this tetraflow", "summary": "Get available file slugs for tetraflow", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetraflowFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraflows/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a tetraflow artifact", "summary": "Get labels for a tetraflow", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraflows": { "get": { "description": "Returns a list of all tetraflow artifacts, optionally filtered by namespace type", "summary": "List all tetraflow artifacts", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetraflowObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraflows/{namespace}": { "get": { "description": "Returns a list of all tetraflow artifacts given a namespace", "summary": "List all tetraflow for namespace", "tags": [ "tetraflows" ], "operationId": "getTetraflowArtifactsByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetraflowObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/{namespace}": { "get": { "description": "Returns a list of all tetrasphere artifacts given a namespace", "summary": "List all tetraspheres for namespace", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifactByNamespace", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetrasphereObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/{namespace}/{slug}": { "get": { "description": "Returns a list of all tetrasphere artifacts given a namespace and slug", "summary": "List all tetraspheres for namespace/slug", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifactByNamespaceAndSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetrasphereObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/{namespace}/{slug}/{version}/files/{fileSlug}": { "get": { "description": "Returns the file contents for a tetrasphere file given a namespace, slug, version, and file slug", "summary": "Get contents for a tetrasphere file", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifactByNamespaceSlugAndFileSlug", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/TetrasphereFileSlugParam" }, { "$ref": "#/components/parameters/DownloadQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200File" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/{namespace}/{slug}/{version}": { "get": { "description": "Returns a single tetrasphere artifact matching the namespace, slug, and version", "summary": "Get a single tetrasphere artifact", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifactByNamespaceSlugAndVersion", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetrasphereObject" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/{namespace}/{slug}/{version}/files": { "get": { "description": "Returns which file slugs are available to retrieve for this tetrasphere", "summary": "Get available file slugs for tetrasphere", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifactFileSlugs", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetrasphereFileSlugList" }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/{namespace}/{slug}/{version}/labels": { "get": { "description": "Returns a list of the labels associated with a tetrasphere artifact", "summary": "Get labels for a tetrasphere", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifactLabels", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespace" }, { "$ref": "#/components/parameters/ArtifactSlug" }, { "$ref": "#/components/parameters/ArtifactVersion" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200Labels" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres": { "get": { "description": "Returns a list of all tetrasphere artifacts, optionally filtered by namespace type", "summary": "List all tetrasphere artifacts", "tags": [ "tetraspheres" ], "operationId": "getTetrasphereArtifacts", "parameters": [ { "$ref": "#/components/parameters/ArtifactNamespaceTypeQuery" }, { "$ref": "#/components/parameters/LatestOnlyQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "$ref": "#/components/responses/200TetrasphereObjectList" }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/data-acquisition/hubs": { "get": { "tags": [ "Hubs" ], "operationId": "HubController_getAll", "summary": "Get all Hubs", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get a list of Hubs.", "parameters": [ { "name": "include", "required": false, "in": "query", "description": "Include additional Hub fields. Passing 'status' includes network and health statuses.", "example": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "status" ] } } } ], "responses": { "200": { "description": "Successful response with a list of all Hubs", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HubsResponse" } } } } } } }, "/v1/data-acquisition/hubs/{id}": { "get": { "tags": [ "Hubs" ], "operationId": "HubController_getById", "summary": "Get a Hub by id", "description": "**:warning: This is a new API which is still subject to change.**\n\nUse this endpoint to get a Hub's details by id.", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "include", "required": false, "description": "Include additional Hub fields. Passing 'connectors' includes the list of the Hub's Connectors.", "in": "query", "schema": { "type": "array", "items": { "type": "string", "enum": [ "connectors" ] } } } ], "responses": { "200": { "description": "Successful response with a Hub's details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HubDetailsDto" } } } } } } }, "/v1/commands/actions": { "get": { "summary": "List command actions", "description": "Use this endpoint to list all distinct on-premises command actions.\n\nNote that this API does not control command actions, so this result may contain erroneous or unsent actions.", "tags": [ "Commands" ], "operationId": "list-command-actions", "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "[\n \"TetraScience.Connector.gdc.HttpRequest\",\n \"TetraScience.Connector.Start\",\n \"TetraScience.Connector.Stop\"\n]" } }, "schema": { "type": "array", "items": { "type": "string", "example": "TetraScience.Connector.Start" } } } } } } } }, "/v1/dataapps/kv/{appSlug}": { "get": { "summary": "List connector key value keys for a data app", "tags": [ "Data Apps" ], "operationId": "list-data-app-connector-key-value-keys", "parameters": [ { "name": "appSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "artifact_type", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "CONTAINER", "TETRASPHERE" ] }, "description": "Required artifact type filter used during authorization and app lookup." }, { "name": "namespace", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Required artifact namespace filter used during authorization and app lookup." } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataAppConnectorKeyValueKeysResponse" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "503": { "description": "Service Unavailable" } } }, "put": { "summary": "Save connector key values for a data app", "tags": [ "Data Apps" ], "operationId": "save-data-app-connector-key-values", "parameters": [ { "name": "appSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "artifact_type", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "CONTAINER", "TETRASPHERE" ] }, "description": "Required artifact type filter used during authorization and app lookup." }, { "name": "namespace", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Required artifact namespace filter used during authorization and app lookup." } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SaveDataAppConnectorKeyValuesRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorKeyValuesResponse" } } } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" }, "503": { "description": "Service Unavailable" } } } }, "/login/forgot-password-request": { "post": { "summary": "Send a password reset email to the user by email", "description": "Initiate a password reset process by sending a reset email to the user. Use this when users forget their password and need to reset it securely.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "subdomain": { "type": "string" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" } } } } } }, "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Password restore email sent to registered email" }, "400": { "description": "Bad request, details in response", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/login": { "post": { "summary": "Login user", "description": "Authenticate user credentials with email and password. Use this for standard username/password login flows to obtain user tokens for API access.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string", "format": "email" }, "password": { "type": "string", "minLength": 8, "format": "password" }, "subdomain": { "type": "string" } } } } } }, "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Login Successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "user": { "type": "object", "properties": { "authType": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/authType" }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "firstName": { "type": "string", "example": "John" }, "lastName": { "type": "string", "example": "Doe" }, "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "lastActivity": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "systemRole": { "type": "string" }, "roles": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "$ref": "#/paths/~1login/post/responses/200/content/application~1json/schema/properties/user/properties/status" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } }, "token": { "type": "string", "description": "JWT token" } } } } } }, "401": { "description": "Not authorized, details in response body", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/v1/accessGroups/{id}/user": { "post": { "summary": "Add a User to an Access Group", "description": "Add a user to an [access group](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization).", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "description": "The UUID of the user to add to the group." } }, "required": [ "userId" ] } } } }, "responses": { "201": { "description": "User added to the group." } } } }, "/v1/accessGroups/{id}/users": { "post": { "summary": "Add or Remove Users from an Access Group", "description": "Add or remove users from an [access group](https://developers.tetrascience.com/docs/managing-organization-details#configure-data-access-rules-for-an-organization).", "tags": [ "Access Groups" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "add": { "type": "array", "items": { "type": "string", "format": "uuid" } }, "remove": { "type": "array", "items": { "type": "string", "format": "uuid" } } } } } } }, "responses": { "201": { "description": "Users list updated." } } } }, "/v1/users/me/organizations": { "post": { "summary": "Set default organization", "tags": [ "Users" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" } } } } } }, "responses": { "200": { "description": "Successfully updated default organization", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User/Organization not found" } } } }, "/v1/users/{userId}/token/revoke": { "post": { "summary": "Revoke user token", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "token": { "type": "string", "description": "Truncated (last 7 characters) or full token value" } }, "required": [ "userId", "token" ] } } } }, "responses": { "200": { "description": "Responding with user token", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1users~1%7BuserId%7D~1token/post/responses/200/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/users/{userId}/token": { "post": { "summary": "Create user token", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "tokenExpiry": { "type": "integer", "enum": [ 4, 8, 12, 24 ], "example": 12 }, "tokenExpiryUnit": { "type": "string", "enum": [ "hours" ], "example": "hours" } }, "required": [ "userId", "tokenExpiry" ] } } } }, "responses": { "200": { "description": "Responding with user token", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string" }, "expiresAt": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema/properties/createdAt" } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/login/update-expired": { "put": { "summary": "Update expired password", "description": "Allow users to update their password if it has expired. Use this when users need to set a new password after their current one has expired.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "password": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/password" }, "newPassword": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/password" }, "subdomain": { "type": "string" } } } } } }, "tags": [ "Login" ], "security": [], "responses": { "200": { "description": "Password updated successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "authType": { "type": "string", "enum": [ "sso", "password", "service" ] }, "email": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/email" }, "firstName": { "type": "string", "example": "John" }, "lastName": { "type": "string", "example": "Doe" }, "id": { "type": "string", "example": "7b2b05ea-99d1-40e5-bebc-e0fd8713e3e2", "format": "uuid" }, "lastActivity": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "systemRole": { "type": "string" }, "roles": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/status" }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } } } } }, "400": { "description": "Bad request, details in response", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/v1/roles/{roleId}/ssoMapping": { "put": { "summary": "Update SSO group mapping for role", "tags": [ "Roles" ], "parameters": [ { "$ref": "#/paths/~1v1~1roles~1%7BroleId%7D/get/parameters/0" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "ssoGroupMappings": { "type": "array", "items": { "type": "string", "example": "idp-group-name" } } } } } } }, "responses": { "200": { "description": "Responding with updated role", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1roles/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "Role not found" } } } }, "/v1/users/me/password": { "put": { "summary": "Update current user's password", "tags": [ "Users" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/password" }, "newPassword": { "$ref": "#/paths/~1login/post/requestBody/content/application~1json/schema/properties/password" } } } } } }, "responses": { "200": { "description": "Password updated successfully" }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/users/{userId}/resetPassword": { "put": { "summary": "Update a user's password", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "$ref": "#/paths/~1v1~1users~1%7BuserId%7D~1unlock/put/requestBody/content/application~1json/schema/properties/password" } } } } } }, "responses": { "200": { "description": "Password reset request handled successfully", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/users/{userId}/status": { "put": { "summary": "Update user status in the organization", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "active", "inactive" ] } } } } } }, "responses": { "200": { "description": "Successfully updated user status", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgSlug": { "$ref": "#/paths/~1%7Bsubdomain%7D~1login~1config/get/parameters/0/schema" }, "organizationId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "role": { "example": "Administrator" }, "roleId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "status": { "type": "string", "enum": [ "active", "inactive" ] }, "userId": { "$ref": "#/paths/~1login~1update-expired/put/responses/200/content/application~1json/schema/properties/id" }, "orgName": { "type": "string" } } } } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/users/{userId}/unlock": { "put": { "summary": "Unlock user", "tags": [ "Users" ], "parameters": [ { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users~1%7BuserId%7D/delete/parameters/1" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "type": "string", "minLength": 8, "format": "password" } } } } } }, "responses": { "200": { "description": "Unlock user request handled successfully", "content": { "application/json": { "schema": { "$ref": "#/paths/~1v1~1organizations~1%7BorganizationId%7D~1users/post/responses/201/content/application~1json/schema" } } } }, "401": { "description": "Invalid token" }, "403": { "description": "Caller is not authorized to perform this action" }, "404": { "description": "User not found" } } } }, "/v1/artifacts/ai-workflows/search": { "post": { "summary": "Search for ai-workflow artifacts", "description": "Search for items using specified criteria", "tags": [ "ai-workflows" ], "operationId": "searchAiWorkflowArtifacts", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiWorkflowObjectList" } } } }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/connectors/search": { "post": { "summary": "Search for items", "description": "Search for items using specified criteria", "tags": [ "connectors" ], "operationId": "searchConnectors", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorObjectList" } } } } } } }, "/v1/artifacts/data-apps/search": { "post": { "summary": "Search for items", "description": "Search for items using specified criteria", "tags": [ "connectors" ], "operationId": "searchDataApps", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorObjectList" } } } }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/ids/search": { "post": { "summary": "Search for items", "description": "Search for items using specified criteria", "tags": [ "IDS" ], "operationId": "searchIds", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdsObjectList" } } } } } } }, "/v1/artifacts/lakehouse/search": { "post": { "summary": "Search for lakehouse artifacts", "description": "Search for items using specified criteria", "tags": [ "lakehouse" ], "operationId": "searchLakehouseArtifacts", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LakehouseObjectList" } } } }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/protocols/search": { "post": { "summary": "Search for items", "description": "Search for items using specified criteria", "tags": [ "Protocols" ], "operationId": "searchProtocols", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtocolObjectList" } } } } } } }, "/v1/artifacts/schemas/search": { "post": { "summary": "Search for schema artifacts", "description": "Search for items using specified criteria", "tags": [ "schemas" ], "operationId": "searchSchemaArtifacts", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaObjectList" } } } }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/task-scripts/search": { "post": { "summary": "Search for items", "description": "Search for items using specified criteria", "operationId": "searchTaskScripts", "tags": [ "Task Scripts" ], "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskScriptObjectList" } } } } } } }, "/v1/artifacts/tetraflows/search": { "post": { "summary": "Search for tetraflow artifacts", "description": "Search for items using specified criteria", "tags": [ "tetraflows" ], "operationId": "searchTetraflows", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TetraflowObjectList" } } } }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/artifacts/tetraspheres/search": { "post": { "summary": "Search for tetrasphere artifacts", "description": "Search for items using specified criteria", "tags": [ "tetraspheres" ], "operationId": "searchTetrasphereArtifacts", "parameters": [ { "$ref": "#/components/parameters/ValueQuery" }, { "$ref": "#/components/parameters/LimitQuery" }, { "$ref": "#/components/parameters/IncludePrereleasesQuery" } ], "responses": { "200": { "description": "A list of items that match the search query", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TetrasphereObjectList" } } } }, "404": { "$ref": "#/components/responses/404Any" } } } }, "/v1/dataapps/apps/{id}/labels": { "put": { "summary": "Update Data App labels for access control", "description": "Replaces all labels assigned to a Data App. Labels drive EARS (Entitlement and Access Rights Service) access control policies \u2014 use them to control which users and teams can see and interact with a Data App. Pass an empty array to clear all labels.", "tags": [ "Data Apps" ], "operationId": "update-container-data-app-labels", "parameters": [ { "name": "id", "in": "path", "required": true, "description": "Data App ID", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "labels" ], "properties": { "labels": { "type": "array", "description": "Complete set of labels to assign. Replaces any previously assigned labels.", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string", "description": "Label name (e.g., \"department\", \"environment\")." }, "value": { "type": "string", "description": "Label value (e.g., \"research\", \"production\")." } } } } } }, "examples": { "set_labels": { "summary": "Assign access control labels", "value": { "labels": [ { "name": "department", "value": "research" }, { "name": "environment", "value": "production" } ] } }, "clear_labels": { "summary": "Remove all labels", "value": { "labels": [] } } } } } }, "responses": { "200": { "description": "Labels updated successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } } } } } }, "400": { "description": "Invalid request format or label configuration." }, "404": { "description": "Data App not found." }, "500": { "description": "Internal Server Error" } } } }, "/v1/externalevents/requests/update": { "post": { "operationId": "updateSubscription", "tags": [ "Edit Subscriptions", "Requests" ], "summary": "Request to update a subscription", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "id", "update" ], "properties": { "id": { "type": "string" }, "update": { "$ref": "#/components/schemas/EventbridgeSubscriptionUpdate" } } } } } }, "responses": { "200": { "description": "Request created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventbridgeWriteRequest" } } } }, "400": { "$ref": "#/components/responses/400Any" }, "404": { "$ref": "#/components/responses/404Any" }, "500": { "$ref": "#/components/responses/500Any" }, "501": { "$ref": "#/components/responses/501Any" } } } }, "/v1/data-acquisition/agent/config": { "post": { "summary": "Agent Configuration", "description": "This endpoint returns all the parameters that client needs in order to upload files directly to Amazon S3 and upload log directly to Amazon CloudWatch. Using these values and temporary credentials obtained from `/v1/data-acquisition/agent/credentials` client can upload files to S3 into their bucket and log to CloudWatch into their log groups.", "tags": [ "Data Acquisition" ], "operationId": "user-defined-integration-agent-configuration", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "agentId", "agentVersion" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TDP web UI, where the user-defined integration is created. For existing TetraScience Agent who can connect to TetraScience Cloud directly, provide the agentId to this field." }, "agentVersion": { "type": "string", "description": "The Agent version, such as \"v1.0.0\"." } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"orgSlug\": \"mgtest\",\n \"integrationId\": \"844dc7e9-a4c4-429c-b364-b54bf531c078\",\n \"agentId\": \"0db83bc0-0921-414c-ad1c-05d47af3dd44\",\n \"agentName\": \"test agent\",\n \"region\": \"us-east-2\",\n \"bucket\": \"ts-platform-dev-datalake\",\n \"streamBucket\": \"ts-platform-dev-stream\",\n \"backupBucket\": \"ts-platform-dev-backup\",\n \"kmsKey\": \"alias/customer-key-development-mgtest\",\n \"integrationType\": \"user_defined\",\n \"metadata\": {},\n \"tags\": [],\n \"logGroupName\": \"/agents/mgtest/0db83bc0-0921-414c-ad1c-05d47af3dd44\",\n \"rpcSourceQueueUrl\": \"https://sqs.us-east-2.amazonaws/706717599419/onprem-0db83bc0-0921-414c-ad1c-05d47af3dd44.fifo\",\n \"rpcPlatformQueueUrl\": \"https://sqs.us-east-2.amazonaws/706717599419/onprem-development-command-service-inbound\"\n}" } }, "schema": { "type": "object", "properties": { "orgSlug": { "type": "string", "example": "mgtest" }, "integrationId": { "type": "string", "example": "844dc7e9-a4c4-429c-b364-b54bf531c078" }, "agentId": { "type": "string", "example": "0db83bc0-0921-414c-ad1c-05d47af3dd44" }, "agentName": { "type": "string", "example": "test agent" }, "region": { "type": "string", "example": "us-east-2" }, "bucket": { "type": "string", "example": "ts-platform-dev-datalake" }, "streamBucket": { "type": "string", "example": "ts-platform-dev-stream" }, "backupBucket": { "type": "string", "example": "ts-platform-dev-backup" }, "kmsKey": { "type": "string", "example": "alias/customer-key-development-mgtest" }, "integrationType": { "type": "string", "example": "user_defined" }, "metadata": { "type": "object", "properties": {} }, "tags": { "type": "array" }, "logGroupName": { "type": "string", "example": "/agents/mgtest/0db83bc0-0921-414c-ad1c-05d47af3dd44" }, "rpcSourceQueueUrl": { "type": "string", "example": "https://sqs.us-east-2.amazonaws/706717599419/onprem-0db83bc0-0921-414c-ad1c-05d47af3dd44.fifo" }, "rpcPlatformQueueUrl": { "type": "string", "example": "https://sqs.us-east-2.amazonaws/706717599419/onprem-development-command-service-inbound" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } } }, "deprecated": false } }, "/v1/data-acquisition/agent/status": { "post": { "summary": "Agent Status (Heart Beat)", "description": "This endpoint allows TetraScience Agent to send heartbeats to the Tetrascience platform periodically. Platform will return the agent's name. It's recommended to send a heartbeat every 30 seconds.\n\nIt requires a user-defined agent set up in the TetraScience Web UI.\n\nRequired fields:\n- agentId\n- agentVersion\n\nOptional fields:\n- agent\n- sourceType - If agent defines various source types, like file-log agent, this should be an array of objects with `filePath` and `type` values. Otherwise, it should be single item array that contains object with field `type`", "tags": [ "Data Acquisition" ], "operationId": "user-defined-integration-agent-status-heart-beat", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "agentId", "agentVersion" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TDP web UI, where the user-defined integration is created. For existing Tetra Agent that can connect to TetraScience Cloud directly, provide the agentId to this field." }, "agentVersion": { "type": "string", "description": "The Agent version, such as \"v1.0.0\"." }, "agent": { "type": "string", "description": "Type of agent, in the form `TetraScience.Agent.file-log`, `TetraScience.Agent.empower`, etc. If provided, object in data lake will have the metadata value `agent` in the form of `agent agentVersion` (for example, `TetraScience.Agent.file-log v4.3.0')", "enum": [ "TetraScience.Agent.file-log", "TetraScience.Agent.empower", "TetraScience.Agent.unicorn", "TetraScience.Agent.labx", "TetraScience.Agent.chromeleon", "TetraScience.Agent.user-defined" ], "default": "TetraScience.Agent.user-defined" } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"agentName\": \"test\"\n}" } }, "schema": { "type": "object", "properties": { "agentName": { "type": "string", "example": "test" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } } }, "deprecated": false }, "put": { "summary": "Agent Status Setting Update", "description": "This endpoint allows TetraScience Agent to send status setting update to platform. Tetrascience agents have start/stop button. When start button is clicked, agent should hit endpoint with `statusSetting=STARTED`. Opposite, when stop button is clicked, agent should hit endpoint with `statusSetting=STOPPED`.\n\n It requires a user-defined agent set up in the TetraScience Web UI", "tags": [ "Data Acquisition" ], "operationId": "user-defined-integration-agent-status-setting-update", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "agentId", "agentVersion" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TDP web UI, where the user-defined integration is created. For existing TetraScience Agent who can connect to TetraScience Cloud directly, provide the agentId to this field." }, "agentVersion": { "type": "string", "description": "The Agent version, such as \"v1.0.0\"." }, "agent": { "type": "string", "description": "Type of agent, in the form `TetraScience.Agent.file-log`, `TetraScience.Agent.empower`, etc. If provided, object in data lake will have the metadata value `agent` in the form of `agent agentVersion` (for example, `TetraScience.Agent.file-log v4.3.0')", "enum": [ "TetraScience.Agent.file-log", "TetraScience.Agent.empower", "TetraScience.Agent.unicorn", "TetraScience.Agent.labx", "TetraScience.Agent.chromeleon", "TetraScience.Agent.user-defined" ], "default": "TetraScience.Agent.user-defined" }, "statusSetting": { "type": "string", "description": "Status setting of the agent. It can be `STARTED` or `STOPPED`", "enum": [ "STARTED", "STOPPED" ], "default": "STARTED" } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"agentName\": \"test\"\n}" } }, "schema": { "type": "object", "properties": { "agentName": { "type": "string", "example": "test" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } } }, "deprecated": false } }, "/v1/data-acquisition/agent/systemmetric": { "post": { "summary": "Agent System Metric Upload", "description": "TetraScience Agent can periodically upload system metrics of itself and the host environment the Agent is running. It requires a user-defined agent set up in the TetraScience Web UI. Uploaded system metric file should be new line delimited JSON file. See below for more details.", "tags": [ "Data Acquisition" ], "operationId": "user-defined-integration-agent-system-metric-upload", "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "required": [ "agentId", "agentVersion", "systemmetric" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TetraScience Web UI where the user-defined integration is created. For existing TetraScience Agent who can connect to TetraScience Cloud directly, provide the agentId to this field." }, "agentVersion": { "type": "string", "description": "The Agent version, such as \"v1.0.0\"." }, "systemmetric": { "type": "string", "description": "The system metric file to upload.", "format": "binary" } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"message\": \"OK\"\n}" } }, "schema": { "type": "object", "properties": { "message": { "type": "string", "example": "OK" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } } } } }, "/v1/data-acquisition/agent/upload": { "post": { "summary": "File Upload", "description": "This endpoint uploads a file to TetraScience Cloud. It requires a user-defined agent set up in the TetraScience Web UI. API users can use it to upload, manage their files, and trigger pipelines.\n\n\nMaximum payload size: 500MB\n\nValidations performed by this endpoint:\n\n1. `agentId` must be a valid ID of the user defined agent (UDA)\n2. param `sourceType` must contain only lower case alphanumerical characters and dashes\n3. params `metadata` and `tags` must contain only ASCII characters; `tags` values cannot contain comma and values must be unique\n4. params `metadata` and `tags` together as JSON objects must have less than 1.5KB of text (1536 characters)", "tags": [ "Data Acquisition" ], "operationId": "user-defined-integration-file-upload", "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "required": [ "agentId", "file", "filePath" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TetraScience Web UI where the user-defined integration is created. For existing TetraScience Agent who can connect to TetraScience Cloud directly, provide the agentId to this field." }, "agent": { "type": "string", "description": "Type of agent, in the form `TetraScience.Agent.file-log`, `TetraScience.Agent.empower`, etc. If provided, object in data lake will have the metadata value `agent` in the form of `agent agentVersion` (for example, `TetraScience.Agent.file-log v4.3.0')", "enum": [ "TetraScience.Agent.file-log", "TetraScience.Agent.empower", "TetraScience.Agent.unicorn", "TetraScience.Agent.labx", "TetraScience.Agent.chromeleon", "TetraScience.Agent.user-defined" ], "default": "TetraScience.Agent.user-defined" }, "agentVersion": { "type": "string", "description": "Version of the agent that's uploading the file (for example, `v4.3.0`)" }, "sourceType": { "type": "string", "description": "If provided, this field will overwrite the sourceType configured in the TetraScience Web UI. Default value: `unknown` A valid sourceType string can contain only alphanumeric characters in lower case letters and dash. Any other character will trigger validation error.", "default": "unknown" }, "fileCategory": { "type": "string", "description": "The file category of the uploaded file, included in the datalake path.", "enum": [ "RAW", "PROCESSED" ], "default": "RAW" }, "fileId": { "type": "string", "description": "If provided, it must be a valid and unique UUID. If not provided, platform will generate unique UUID value." }, "traceId": { "type": "string", "description": "A valid UUID, if provided. If not present, system will use the `fileId` value" }, "filePath": { "type": "string", "description": "Required. An example of `filePath` can be `/experiment_2/sample a/result.pdf`" }, "file": { "type": "string", "format": "binary", "description": "Content of a single file to upload" }, "payloadGzip": { "type": "string", "description": "If set to `true`, indicates the file content is gzip compressed. If false or omitted, the content will be gzipped during upload. Default value: `false`.", "default": "false" }, "metadata": { "type": "string", "description": "JSON string as `{\"key\", \"value\"}`. The metadata and value will overwrite metadata defined for the user-defined integration in the TetraScience Web UI. Validations: fields and values must contain only ASCII characters; values must be either string or null values." }, "tags": { "type": "string", "description": "JSON string as `[\"tag 1\", \"tag 2\"]`. Validations: values must contain only ASCII characters; value must not have comma (,); values must be unique" }, "labels": { "type": "string", "description": "JSON string as `[{\"name\":\"label name\", \"value\":\"label value\"}]`. The labels will join the agent defined labels. Validations: Names can include any unicode characters, except line breaks. They cannot be empty, and they have a maximun length of 128 characters. Values can include any unicode characters, except line breaks, and they cannot be empty." } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"type\": \"s3file\",\n \"fileKey\": \"demo/1cd9ffeb-1e10-45d2-a8d6-61a88c829e5c/RAW/test/raw.json\",\n \"bucket\": \"ts-platform-env-datalake\",\n \"version\": \"grXOL0hSiCeKu094tBw.mu4LXQErWzGT\",\n \"fileId\": \"c4c6cfdf-67d0-4672-a1a6-0b9f558d0156\"\n}" } }, "schema": { "type": "object", "properties": { "type": { "type": "string", "example": "s3file" }, "fileKey": { "type": "string", "example": "demo/1cd9ffeb-1e10-45d2-a8d6-61a88c829e5c/RAW/test/raw.json" }, "bucket": { "type": "string", "example": "ts-platform-env-datalake" }, "version": { "type": "string", "example": "grXOL0hSiCeKu094tBw.mu4LXQErWzGT" }, "fileId": { "type": "string", "example": "c4c6cfdf-67d0-4672-a1a6-0b9f558d0156" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with config source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with config source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } }, "422": { "description": "422", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 422,\n \"error\": \"Unprocessable Entity\",\n \"message\": \"Param sourceType contains invalid character or upper case letter\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 422, "default": 0 }, "error": { "type": "string", "example": "Unprocessable Entity" }, "message": { "type": "string", "example": "Param sourceType contains invalid character or uppercase letter" } } } } } } }, "deprecated": false } }, "/v1/data-acquisition/agent/log": { "post": { "summary": "Agent Log Upload", "description": "This endpoint uploads agents log to TetraScience Cloud. It requires a user-defined agent set up in the TetraScience Web UI.", "tags": [ "Data Acquisition" ], "operationId": "user-defined-integration-log-upload", "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "required": [ "agentId", "agentVersion", "log" ], "properties": { "agentId": { "type": "string", "description": "This is the sourceId for a user-defined integration. Need to copy from the TetraScience Web UI where the user-defined integration is created. For existing TetraScience Agent who can connect to TetraScience Cloud directly, provide the agentId to this field." }, "agentVersion": { "type": "string", "description": "The Agent version, such as \"v1.0.0\"." }, "log": { "type": "string", "description": "The log file to upload.", "format": "binary" } } } } } }, "responses": { "200": { "description": "200", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"message\": \"OK\"\n}" } }, "schema": { "type": "object", "properties": { "message": { "type": "string", "example": "OK" } } } } } }, "404": { "description": "404", "content": { "application/json": { "examples": { "Result": { "value": "{\n \"statusCode\": 404,\n \"error\": \"Not Found\",\n \"message\": \"Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist\"\n}" } }, "schema": { "type": "object", "properties": { "statusCode": { "type": "integer", "example": 404, "default": 0 }, "error": { "type": "string", "example": "Not Found" }, "message": { "type": "string", "example": "Source with source ID 47ab98d5-cccb-4a7d-86f4-0ff8f7c11bda does not exist" } } } } } } }, "deprecated": false } } }, "components": { "schemas": { "FLAConfiguration": { "type": "object", "description": "Agent configuration if available, null otherwise.", "properties": { "group_user": { "type": "object", "properties": { "user_name": { "type": "string", "description": "The Windows User service account used for managing folder and file access for the agent.", "example": "user1" }, "password": { "type": "string", "description": "A secure hash of the user's password.", "example": "-1943064076" } } }, "agent_configuration": { "type": "object", "properties": { "s3_direct_upload": { "type": "boolean", "description": "Whether to enable direct upload of files and logs to S3.", "example": true }, "receive_commands": { "type": "boolean", "description": "Whether the agent should receive and execute commands from TDP.", "example": true }, "destination_id": { "type": "string", "format": "uuid", "description": "The Destination Id of the Agent, used in place of its own ID in datalake file keys.", "example": "2e72c40f-432e-46a9-a027-e70686e8cd39" }, "agent_id": { "type": "string", "description": "The ID of the agent.", "example": "f82d2230-eed1-443c-9ed8-2e1fef9039c2" }, "org_slug": { "type": "string", "description": "The slug of the organization.", "example": "tetrascience" }, "Authentication": { "type": "string", "description": "A secure hash of the agent's authentication token.", "example": "-1943064076" }, "advanced_setting": { "type": "object", "properties": { "heart_beat_interval": { "type": "integer", "description": "The interval in seconds for the agent to check its connection status.", "example": 30 }, "agent_log_upload_job_interval": { "type": "integer", "description": "The interval in seconds for the agent to upload logs.", "example": 30 }, "compression_type": { "type": "string", "enum": [ "Zip", "SevenZip" ], "description": "The compression type for the agent.", "example": "zip" }, "retry_limit": { "type": "integer", "description": "The number of times the agent will retry to upload a file before it stops attempting the upload.", "example": 3 }, "tdpApiUrlOverride": { "type": "string", "description": "The URL of the TDP API", "example": "https://api.tetrascience.com" }, "validateAwsCertificate": { "type": "boolean", "description": "Indicates whether to validate the AWS certificate or not.", "example": true }, "proxyUseCustom": { "type": "boolean", "description": "Indicates whether to use a custom proxy or not.", "example": true }, "proxyHost": { "type": "string", "description": "The host of the proxy, if one is set.", "example": "proxy.example.com" }, "proxyPort": { "type": "integer", "description": "The port of the proxy, if one is set.", "example": 8080 }, "proxyBypassList": { "type": "string", "description": "The list of addresses to bypass the proxy.", "example": "example.com,example.org" }, "proxyUsername": { "type": "string", "description": "The username for the proxy, if one is set.", "example": "proxyuser" }, "proxyPassword": { "type": "string", "description": "A secure hash of the agent's authentication token.", "example": "-1943064076" }, "proxyUseSystem": { "type": "boolean", "description": "Indicates whether to use the system proxy or not.", "example": false } } } } }, "services_enabled": { "type": "array", "items": { "type": "string", "enum": [ "fileWatcher" ] }, "description": "The services enabled for the agent.", "example": [ "fileWatcher" ] }, "services_configuration": { "type": "object", "properties": { "fileWatcher": { "type": "object", "properties": { "use_path_configuration": { "type": "boolean", "description": "Indicates whether or not to use path-level configuration for start date and interval.", "example": true }, "paths": { "type": "array", "items": { "$ref": "#/components/schemas/FLAFileWatcherPathConfigurationItem" } } }, "required": [ "use_path_configuration" ] } }, "required": [ "fileWatcher" ] }, "windows_scheduled_task": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether the Windows scheduled task to ensure the agent service is running is enabled or not..", "example": true }, "time": { "type": "string", "description": "The time of day when the Windows scheduled task is triggered.", "example": "1:00pm" } } } } }, "FLAFileWatcherPathConfigurationItem": { "type": "object", "description": "**FLA v4.3.0+**: Options for archival and deletion of files in the path after upload", "properties": { "path": { "type": "string", "description": "The path to watch.", "example": "C:\\FLA\\test1" }, "file_watch_mode": { "type": "string", "enum": [ "file", "folder" ], "description": "The file watch mode.", "example": "file" }, "source_type": { "type": "string", "description": "The source type.", "example": "unknown" }, "interval": { "type": "integer", "description": "The time in seconds the agent will monitor the files for changes before uploading.\nThis also specifies the time between scans of the path.", "example": 30 }, "start_date": { "type": "string", "format": "date", "description": "Files with a last modified date on or after the specified date will be scanned and uploaded.", "example": "2023-03-27" }, "patterns": { "type": "array", "items": { "type": "string" }, "description": "Defines a list of [glob patterns](https://developers.tetrascience.com/docs/common-glob-pattern) to match files in the path.", "example": [ "*.*" ] }, "metadata": { "type": "object", "description": "Custom metadata to associate with files in the path.", "example": { "meta1": "value1" } }, "tags": { "type": "string", "description": "Comma-separated list of tags to associate with files in the path.", "example": "tag1,tag2" }, "labels": { "type": "array", "description": "**FLA v4.3.0+**: Labels applied to files in the path", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The label name.", "example": "vendor" }, "value": { "type": "string", "description": "The label value.", "example": "Beckman Coulter" } }, "required": [ "name", "value" ] } }, "archive": { "type": "object", "description": "**FLA v4.3.0+**: Options for archival and deletion of files in the path after upload", "properties": { "path": { "type": "string", "description": "The location where files from this path will be archived", "example": "c:\\archive" }, "wait_time": { "type": "integer", "description": "Amount of time to wait before moving the source file to the archive path after uploading", "example": 1 }, "wait_time_unit": { "type": "string", "enum": [ "Minutes", "Hours", "Days" ], "description": "The unit for the wait_time", "example": "Days" }, "archive_without_checksum": { "type": "boolean", "description": "Determines if files uploaded by a previous agent version that have no checksum are archived or not.", "example": false }, "dry_run": { "type": "boolean", "description": "Whether to perform a dry run", "example": false }, "delete": { "type": "object", "description": "Options for deletion of files from the archive path", "properties": { "wait_time": { "type": "integer", "description": "Amount of time to wait before deleting the file from the archive path", "example": 7 }, "wait_time_unit": { "type": "string", "enum": [ "Minutes", "Hours", "Days" ], "description": "The unit for the wait_time", "example": "Days" } }, "required": [ "wait_time", "wait_time_unit" ] } }, "required": [ "path", "wait_time", "wait_time_unit" ] }, "fetch_os_created_user": { "type": "boolean", "description": "Determines if the OS-created user metadata is retrieved and included as metadata on files in the path or not.", "example": false }, "symlink_behavior": { "type": "string", "enum": [ "Legacy", "Ignore" ], "description": "**(For FLA v4.4.1 and higher only)** Specifies how the Agent handles symbolic links when file scanning." } }, "required": [ "file_watch_mode", "source_type", "interval", "start_date", "path", "patterns" ] }, "AgentConfiguration": { "type": "object", "properties": { "id": { "type": "string", "example": "f82d2230-eed1-443c-9ed8-2e1fef9039c2", "description": "The unique ID of the configuration." }, "config": { "$ref": "#/components/schemas/FLAConfiguration" }, "by": { "type": "string", "example": "cloud", "description": "The entity that initiated the command." }, "at": { "type": "string", "format": "date-time", "example": "2023-08-28T14:43:46.381Z", "description": "The timestamp when the command was executed." }, "commandStatus": { "type": "string", "example": "SUCCESS", "description": "The status of the command." }, "commandId": { "type": "string", "example": "f82d2230-eed1-443c-9ed8-2e1fef9039c2", "description": "The unique ID of the command." } } }, "HubStatusDto": { "type": "object", "properties": { "health": { "description": "The health status of the Hub.", "type": "object", "properties": { "breakdown": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "enum": [ "Availability", "CPU", "Disk", "Memory", "ProxyMemory", "ProxyMemoryMax", "ProxyAvailability" ] }, "status": { "type": "string", "enum": [ "HEALTHY", "WARNING", "CRITICAL" ] } } } }, "status": { "type": "string", "description": "The overall health status of the Hub. Rolls up to the most severe status in the breakdown.", "enum": [ "HEALTHY", "WARNING", "CRITICAL" ] } } }, "network": { "description": "The network status of the Hub.", "type": "string", "enum": [ "Online", "Offline", "Never Seen" ] }, "lastSeen": { "description": "The last time the Hub was seen by the platform.", "format": "date-time", "type": "string" }, "metrics": { "type": "array", "items": { "type": "object", "properties": { "cpuUsedSystem": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "cpuUsedUser": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "diskFree": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "diskUsed": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "memoryUsed": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryFree": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryBuffered": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryCached": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryAvailable": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryTotal": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryUsedPercentOfReservation": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "memoryMax": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } } } } }, "proxies": { "description": "The status of the Hub's built-in Agent proxies.", "type": "object", "properties": { "l7": { "type": "object", "properties": { "startedAt": { "type": "string", "format": "date-time" }, "status": { "type": "string", "enum": [ "RUNNING", "STOPPED" ] } } }, "l7ReverseNginx": { "type": "object", "properties": { "startedAt": { "type": "string", "format": "date-time" }, "status": { "type": "string", "enum": [ "RUNNING", "STOPPED" ] } } }, "l7ReverseSocat": { "type": "object", "properties": { "startedAt": { "type": "string", "format": "date-time" }, "status": { "type": "string", "enum": [ "RUNNING", "STOPPED" ] } } }, "metrics": { "type": "array", "items": { "type": "object", "properties": { "cpuUsed": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "memoryUsed": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } }, "memoryUsedPercentOfMax": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "memoryUsedPercentOfReservation": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Percent" ] } } }, "memoryMax": { "type": "object", "properties": { "value": { "type": "number" }, "unit": { "type": "string", "enum": [ "Bytes" ] } } } } } } } } }, "required": [ "network", "lastSeen", "proxies", "metrics", "health" ] }, "HubHostDto": { "type": "object", "properties": { "ipAddress": { "type": "string", "description": "The Hub's IP address." }, "hostName": { "type": "string", "description": "The Hub's host name." }, "platformName": { "type": "string", "description": "The Hub's operating system name." }, "platformVersion": { "type": "string", "description": "The Hub's operating system version." } }, "required": [ "ipAddress", "hostName", "platformName", "platformVersion" ] }, "HubDto": { "type": "object", "properties": { "id": { "description": "The Hub's id.", "type": "string" }, "name": { "description": "The Hub's name.", "type": "string" }, "orgSlug": { "description": "The organization slug that the Hub belongs to.", "type": "string" }, "description": { "description": "The Hub's description.", "type": "string" }, "httpProxyHost": { "description": "The Hub's http parent proxy host, if set.", "type": "string" }, "httpProxyPort": { "description": "The Hub's http parent proxy port, if set.", "type": "number" }, "httpProxyUsername": { "description": "A legacy field from when Hub's parent proxy was configured in the cloud; no longer populated.", "type": "string" }, "httpsProxyHost": { "type": "string", "description": "The Hub's https parent proxy host, if set." }, "httpsProxyPort": { "type": "number", "description": "The Hub's https parent proxy port, if set." }, "httpsProxyUsername": { "type": "string", "description": "A legacy field from when Hub's parent proxy was configured in the cloud; no longer populated." }, "noProxy": { "type": "string", "description": "The Hub's no proxy list, if set." }, "l7ProxyForwardPort": { "type": "number", "description": "The Hub's L7 proxy forward port, used by Agents automatically when using this Hub." }, "l7ProxyReverseHttpPort": { "type": "number", "description": "The Hub's L7 proxy reverse http port, configured explicitly on Agents." }, "l7ProxyReverseHttpsPort": { "type": "number", "description": "The Hub's L7 proxy reverse https port, configured explicitly on Agents." }, "l7ProxySocatPort": { "type": "number", "description": "The Hub's L7 proxy socat port. Not used externally, but configurable to avoid port conflicts." }, "l7ProxyReverseMqttPort": { "type": "number", "description": "The Hub's L7 proxy reverse mqtt port, if set, configured explicitly on IoT Agents." }, "l7ProxySocatMqttPort": { "type": "number", "description": "The Hub's L7 proxy socat mqtt port. Not used externally, but configurable to avoid port conflicts." }, "l7ProxyLocalnets": { "type": "string", "description": "The Hub's L7 proxy localnets, if set." }, "l7ProxyDnsNameservers": { "type": "string", "description": "The Hub's L7 proxy dns nameservers, if set explicitly. Otherwise, defaults to the host VM's." }, "l7ProxyWhitelist": { "type": "string", "description": "The Hub's L7 proxy whitelist, if set. If not set, all endpoints are allowed." }, "l7ProxyMaximumMemoryMb": { "type": "number", "description": "The Hub's L7 proxy maximum memory in MB, if set." }, "enabled": { "type": "boolean", "description": "Whether the Hub is enabled. When disabled, Hub Connectors are disabled but the SSM and ECS Agents continue to await commands." }, "status": { "description": "The Hub's status. Only present on the list endpoint if include=status is passed. Not present when Hub info is returned on Connectors endpoints.", "$ref": "#/components/schemas/HubStatusDto" }, "host": { "$ref": "#/components/schemas/HubHostDto" }, "updatedAt": { "format": "date-time", "type": "string" }, "createdAt": { "format": "date-time", "type": "string" }, "activationExpiresAt": { "description": "The time at which the Hub's activation will expire. 24 hours after creation.", "format": "date-time", "type": "string" }, "ssmInstanceId": { "description": "The Hub's AWS Systems Manager instance id, if the Hub has been installed.", "type": "string" }, "ecsContainerInstanceArn": { "description": "The Hub's AWS ECS container instance ARN, if the Hub has been installed.", "type": "string" } }, "required": [ "id", "name", "orgSlug", "l7ProxyForwardPort", "l7ProxyReverseHttpPort", "l7ProxyReverseHttpsPort", "l7ProxySocatPort", "l7ProxyLocalnets", "l7ProxyMaximumMemoryMb", "enabled", "host", "updatedAt", "createdAt", "activationExpiresAt" ] }, "ArtifactDto": { "type": "object", "properties": { "namespace": { "type": "string" }, "slug": { "type": "string" }, "version": { "type": "string" } }, "required": [ "namespace", "slug", "version", "manifest" ] }, "ConnectorDto": { "type": "object", "description": "Details of a single Connector", "properties": { "id": { "description": "The Connector's id.", "type": "string" }, "name": { "description": "The Connector's name.", "type": "string" }, "orgSlug": { "description": "The organization slug that the Connector belongs to.", "type": "string" }, "description": { "description": "The Connector's description.", "type": "string" }, "artifact": { "$ref": "#/components/schemas/ArtifactDto" }, "hostType": { "description": "The type of host the Connector is running on.", "type": "string", "enum": [ "cloud", "hub" ] }, "hub": { "$ref": "#/components/schemas/HubDto" }, "metadata": { "type": "object" }, "tags": { "type": "array", "items": { "type": "string" } }, "commandQueue": { "description": "The ARN of the Connector's command queue.", "type": "string" }, "clusterArn": { "description": "The ARN of the ECS cluster the Connector is running in.", "type": "string" }, "taskDefinitionArn": { "description": "The ARN of the ECS task definition the Connector is running.", "type": "string" }, "health": { "description": "The health status of the Connector. N/A indicates the Connector has never reported health.", "type": "string", "enum": [ "HEALTHY", "WARNING", "CRITICAL", "N/A" ] }, "healthErrorCode": { "description": "The error code of the Connector's health status, if unhealthy. Defined by each Connector and used to display an error message in the UI.", "type": "string" }, "operatingStatus": { "description": "The desired operating status of the Connector. RUNNING means the Connector is fully working; IDLE means the Connector software is running and awaiting commands, but is not performing its main (Connector-defined) work yet; DISABLED means the software is not running at all.", "type": "string", "enum": [ "IDLE", "RUNNING", "DISABLED" ] }, "networkStatus": { "description": "The network status of the Connector.", "type": "string", "enum": [ "Online", "Offline" ] }, "config": { "description": "The Connector's current configuration, schema varies per Connector.", "type": "object" }, "lastSeenAt": { "description": "The last time the Connector was seen by the platform.", "format": "date-time", "type": "string" }, "updatedAt": { "description": "The last time the Connector's details were updated.", "format": "date-time", "type": "string" }, "createdAt": { "description": "The time the Connector was created.", "format": "date-time", "type": "string" } }, "required": [ "id", "name", "orgSlug", "artifact", "hostType", "metadata", "tags", "commandQueue", "clusterArn", "taskDefinitionArn", "health", "operatingStatus", "networkStatus", "lastSeenAt", "updatedAt", "createdAt" ] }, "ConnectorsResponse": { "type": "object", "description": "A list of Connectors", "properties": { "connectors": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectorDto" } } }, "required": [ "connectors" ] }, "ConnectorGeneratedConfigUiComponentDto": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "generated" ] }, "trigger": { "type": "string", "enum": [ "configuration" ] }, "config": { "type": "array", "items": { "type": "string" } } }, "required": [ "type", "trigger", "config" ] }, "ConnectorCustomConfigUiComponentDto": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "trigger": { "type": "string", "enum": [ "configuration" ] }, "component": { "type": "string" } }, "required": [ "type", "trigger", "component" ] }, "ConnectorCustomRouteUiComponentDto": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "trigger": { "type": "string", "enum": [ "route" ] }, "route": { "type": "string" }, "component": { "type": "string" } }, "required": [ "type", "trigger", "route", "component" ] }, "ConnectorUiDto": { "type": "object", "properties": { "components": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/ConnectorGeneratedConfigUiComponentDto" }, { "$ref": "#/components/schemas/ConnectorCustomConfigUiComponentDto" }, { "$ref": "#/components/schemas/ConnectorCustomRouteUiComponentDto" } ] } } }, "required": [ "components" ] }, "ArtifactDetailsDto": { "type": "object", "description": "This is the detailed version of the ArtifactDto. Includes dynamic fields from the artifact's manifest, so not all response keys are listed here.", "properties": { "namespace": { "type": "string" }, "slug": { "type": "string" }, "version": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "sourceType": { "type": "string" }, "ui": { "$ref": "#/components/schemas/ConnectorUiDto" } }, "required": [ "namespace", "slug", "version", "manifest", "name", "description", "sourceType", "ui" ] }, "LabelDto": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "value": { "type": "string" } }, "required": [ "id", "name", "value" ] }, "ConnectorDetailsDto": { "type": "object", "description": "Details of a single Connector.", "properties": { "id": { "type": "string", "description": "The Connector's id." }, "name": { "type": "string", "description": "The Connector's name." }, "orgSlug": { "type": "string", "description": "The organization slug that the Connector belongs to." }, "description": { "type": "string", "description": "The Connector's description." }, "artifact": { "description": "The Connector's artifact details. If include=artifacts is specified on the request, it will be the ArtifactDetailsDto; otherwise it will be the ArtifactDto.", "oneOf": [ { "$ref": "#/components/schemas/ArtifactDto" }, { "$ref": "#/components/schemas/ArtifactDetailsDto" } ] }, "hostType": { "type": "string", "description": "The type of host the Connector is running on.", "enum": [ "cloud", "hub" ] }, "hub": { "description": "Details of the Hub the Connector is running on, if any.", "$ref": "#/components/schemas/HubDto" }, "metadata": { "description": "The Connector's metadata. Deprecated in favor of labels.", "type": "object" }, "tags": { "description": "The Connector's tags. Deprecated in favor of labels.", "type": "array", "items": { "type": "string" } }, "labels": { "description": "The Connector's labels.", "type": "array", "items": { "$ref": "#/components/schemas/LabelDto" } }, "commandQueue": { "type": "string", "description": "The ARN of the Connector's command queue." }, "clusterArn": { "type": "string", "description": "The ARN of the ECS cluster the Connector is running in." }, "taskDefinitionArn": { "type": "string", "description": "The ARN of the ECS task definition the Connector is running." }, "health": { "type": "string", "description": "The health status of the Connector. N/A indicates the Connector has never reported health.", "enum": [ "HEALTHY", "WARNING", "CRITICAL", "N/A" ] }, "healthErrorCode": { "type": "string", "description": "The error code of the Connector's health status, if unhealthy. Defined by each Connector and used to display an error message in the UI." }, "operatingStatus": { "type": "string", "description": "The desired operating status of the Connector. RUNNING means the Connector should run all tasks; IDLE means the Connector software should run and awaiting commands, but not performing its main (Connector-defined) tasks yet; DISABLED means the software should not run at all." }, "networkStatus": { "type": "string", "description": "The network status of the Connector.", "enum": [ "Online", "Offline" ] }, "config": { "type": "object", "description": "The Connector's current configuration, schema varies per Connector." }, "lastSeenAt": { "format": "date-time", "type": "string", "description": "The last time the Connector was seen by the platform." }, "updatedAt": { "format": "date-time", "type": "string", "description": "The last time the Connector's details were updated." }, "createdAt": { "format": "date-time", "type": "string", "description": "The time the Connector was created." } }, "required": [ "id", "name", "orgSlug", "artifact", "hostType", "metadata", "tags", "labels", "commandQueue", "clusterArn", "taskDefinitionArn", "health", "operatingStatus", "networkStatus", "lastSeenAt", "updatedAt", "createdAt" ] }, "MetricTimeValueDto": { "type": "object", "description": "A metric time-value pair reported by a Connector.", "properties": { "time": { "format": "date-time", "type": "string" }, "value": { "type": "number" } }, "required": [ "time", "value" ] }, "ConnectorMetricDto": { "type": "object", "description": "A set of metric values reported by a Connector.", "properties": { "name": { "type": "string" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/MetricTimeValueDto" } } }, "required": [ "name", "values" ] }, "GetConnectorMetricsDto": { "type": "object", "description": "The set of metrics reported by the Connector.", "properties": { "metrics": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectorMetricDto" } } }, "required": [ "metrics" ] }, "ConnectorFileDto": { "type": "object", "description": "A file reported by a Connector.", "properties": { "id": { "type": "string", "description": "The file's id." }, "uniqueExternalId": { "type": "string", "description": "The file's unique external id, used by Connectors to deduplicate external files." }, "filepath": { "type": "string", "description": "The file's path." }, "status": { "type": "string", "description": "The file's status, as reported by the Connector. This reflects the Connector's own workflow to upload files, not the platform's processing of those files.", "enum": [ "PENDING", "PROCESSING", "SKIPPED", "SUCCESS", "ERROR" ] }, "metadata": { "type": "object" }, "errorCount": { "type": "number", "description": "The number of times the file has errored during upload. After 5 errors, the Connector will stop attempting to retry this file." }, "errorMessage": { "type": "string", "description": "The last error message reported by the Connector for this file." }, "updatedAt": { "format": "date-time", "type": "string", "description": "The last time the file's details were updated." }, "createdAt": { "format": "date-time", "type": "string", "description": "The time the file was created." } }, "required": [ "id", "uniqueExternalId", "filepath", "status", "metadata", "errorCount", "updatedAt", "createdAt" ] }, "ConnectorFilesResponse": { "type": "object", "description": "A list of files reported by a Connector.", "properties": { "files": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectorFileDto" } }, "total": { "type": "number" } }, "required": [ "files", "total" ] }, "GetConnectorFileStatsDto": { "type": "object", "description": "The file stats reported by a Connector.", "properties": { "total": { "type": "number", "description": "The total number files in all statuses." }, "success": { "type": "number", "description": "The number of files in the success status." }, "pending": { "type": "number", "description": "The number of files in the pending status." }, "processing": { "type": "number", "description": "The number of files in the processing status." }, "error": { "type": "number", "description": "The number of files in the error status." }, "skipped": { "type": "number", "description": "The number of files in the skipped status." } }, "required": [ "total", "success", "pending", "processing", "error", "skipped" ] }, "EventbridgeWriteRequest": { "allOf": [ { "type": "object", "properties": { "orgSlug": { "type": "string" } }, "required": [ "orgSlug" ] }, { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "create" ] }, "input": { "type": "object", "properties": { "id": { "type": "string" }, "orgSlug": { "type": "string" }, "selectedEventTypes": { "type": "array", "items": { "type": "string", "enum": [ "tetrascience.file.RegistrationSucceeded.v1", "tetrascience.file.RegistrationFailed.v1", "tetrascience.file.SearchIndexingSucceeded.v1", "tetrascience.file.SearchIndexingFailed.v1", "tetrascience.file.SQLIndexingSucceeded.v1", "tetrascience.file.SQLIndexingFailed.v1", "tetrascience.file.WorkflowCreated.v1", "tetrascience.file.WorkflowInProgress.v1", "tetrascience.file.WorkflowSucceeded.v1", "tetrascience.file.WorkflowFailed.v1", "tetrascience.file.WorkflowCanceled.v1", "tetrascience.agents.common.heartbeat.v1", "tetrascience.agents.common.agentStarted.v1", "tetrascience.agents.common.agentStopped.v1", "tetrascience.agents.filelog.archiveFileDeleteCompleted.v1", "tetrascience.agents.filelog.archiveFileDeleteFailed.v1", "tetrascience.agents.filelog.fileArchiveCompleted.v1", "tetrascience.agents.filelog.fileArchiveFailed.v1", "tetrascience.agents.filelog.fileArchiveSkipped.v1", "tetrascience.agents.filelog.fileArchiveStarted.v1", "tetrascience.agents.filelog.fileScanned.v1", "tetrascience.agents.filelog.fileUploadCompleted.v1", "tetrascience.agents.filelog.fileUploadFailed.v1", "tetrascience.agents.filelog.fileUploadStarted.v1", "tetrascience.agents.filelog.pathValidationFailed.v1", "tetrascience.agents.filelog.scanCompleted.v1", "tetrascience.agents.filelog.scanError.v1", "tetrascience.agents.filelog.scanStarted.v1" ] }, "minItems": 1, "description": "The types of events to subscribe to" }, "userDefinedName": { "type": "string", "pattern": "^[\\S ]*\\S[\\S ]*$", "description": "Subscription name set and displayed in the UI" }, "targetEndpoint": { "type": "string", "pattern": "arn:aws:events:.+:.+:.+", "description": "Amazon Resource Name of the bus resource where events should be sent" }, "targetType": { "type": "string", "enum": [ "BUS" ] }, "enabled": { "type": "boolean" } }, "required": [ "id", "orgSlug", "selectedEventTypes", "userDefinedName", "targetEndpoint", "targetType", "enabled" ] } }, "required": [ "type", "input" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "update" ] }, "input": { "type": "object", "properties": { "id": { "type": "string" }, "update": { "type": "object", "properties": { "selectedEventTypes": { "type": "array", "items": { "type": "string", "enum": [ "tetrascience.file.RegistrationSucceeded.v1", "tetrascience.file.RegistrationFailed.v1", "tetrascience.file.SearchIndexingSucceeded.v1", "tetrascience.file.SearchIndexingFailed.v1", "tetrascience.file.SQLIndexingSucceeded.v1", "tetrascience.file.SQLIndexingFailed.v1", "tetrascience.file.WorkflowCreated.v1", "tetrascience.file.WorkflowInProgress.v1", "tetrascience.file.WorkflowSucceeded.v1", "tetrascience.file.WorkflowFailed.v1", "tetrascience.file.WorkflowCanceled.v1", "tetrascience.agents.common.heartbeat.v1", "tetrascience.agents.common.agentStarted.v1", "tetrascience.agents.common.agentStopped.v1", "tetrascience.agents.filelog.archiveFileDeleteCompleted.v1", "tetrascience.agents.filelog.archiveFileDeleteFailed.v1", "tetrascience.agents.filelog.fileArchiveCompleted.v1", "tetrascience.agents.filelog.fileArchiveFailed.v1", "tetrascience.agents.filelog.fileArchiveSkipped.v1", "tetrascience.agents.filelog.fileArchiveStarted.v1", "tetrascience.agents.filelog.fileScanned.v1", "tetrascience.agents.filelog.fileUploadCompleted.v1", "tetrascience.agents.filelog.fileUploadFailed.v1", "tetrascience.agents.filelog.fileUploadStarted.v1", "tetrascience.agents.filelog.pathValidationFailed.v1", "tetrascience.agents.filelog.scanCompleted.v1", "tetrascience.agents.filelog.scanError.v1", "tetrascience.agents.filelog.scanStarted.v1" ] }, "minItems": 1, "description": "The types of events to subscribe to" }, "userDefinedName": { "type": "string", "pattern": "^[\\S ]*\\S[\\S ]*$", "description": "Subscription name set and displayed in the UI" }, "targetEndpoint": { "type": "string", "pattern": "arn:aws:events:.+:.+:.+", "description": "Amazon Resource Name of the bus resource where events should be sent" }, "targetType": { "type": "string", "enum": [ "BUS" ] }, "enabled": { "type": "boolean" } } } }, "required": [ "id", "update" ] } }, "required": [ "type", "input" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "delete" ] }, "input": { "type": "object", "properties": { "id": { "type": "string" } }, "required": [ "id" ] } }, "required": [ "type", "input" ] } ] }, { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date-time" }, "lastUpdatedAt": { "type": "string", "format": "date-time" }, "id": { "type": "string" } }, "required": [ "createdAt", "lastUpdatedAt", "id" ] }, { "anyOf": [ { "type": "object", "properties": { "status": { "type": "string", "enum": [ "queued" ] } }, "required": [ "status" ] }, { "type": "object", "properties": { "status": { "type": "string", "enum": [ "in-progress" ] } }, "required": [ "status" ] }, { "type": "object", "properties": { "status": { "type": "string", "enum": [ "failed" ] }, "output": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } }, "required": [ "status", "output" ] }, { "type": "object", "properties": { "status": { "type": "string", "enum": [ "completed" ] } }, "required": [ "status" ] } ] } ] }, "EventbridgeExternalSubscriptionCreate": { "type": "object", "properties": { "selectedEventTypes": { "type": "array", "items": { "type": "string", "enum": [ "tetrascience.file.RegistrationSucceeded.v1", "tetrascience.file.RegistrationFailed.v1", "tetrascience.file.SearchIndexingSucceeded.v1", "tetrascience.file.SearchIndexingFailed.v1", "tetrascience.file.SQLIndexingSucceeded.v1", "tetrascience.file.SQLIndexingFailed.v1", "tetrascience.file.WorkflowCreated.v1", "tetrascience.file.WorkflowInProgress.v1", "tetrascience.file.WorkflowSucceeded.v1", "tetrascience.file.WorkflowFailed.v1", "tetrascience.file.WorkflowCanceled.v1", "tetrascience.agents.common.heartbeat.v1", "tetrascience.agents.common.agentStarted.v1", "tetrascience.agents.common.agentStopped.v1", "tetrascience.agents.filelog.archiveFileDeleteCompleted.v1", "tetrascience.agents.filelog.archiveFileDeleteFailed.v1", "tetrascience.agents.filelog.fileArchiveCompleted.v1", "tetrascience.agents.filelog.fileArchiveFailed.v1", "tetrascience.agents.filelog.fileArchiveSkipped.v1", "tetrascience.agents.filelog.fileArchiveStarted.v1", "tetrascience.agents.filelog.fileScanned.v1", "tetrascience.agents.filelog.fileUploadCompleted.v1", "tetrascience.agents.filelog.fileUploadFailed.v1", "tetrascience.agents.filelog.fileUploadStarted.v1", "tetrascience.agents.filelog.pathValidationFailed.v1", "tetrascience.agents.filelog.scanCompleted.v1", "tetrascience.agents.filelog.scanError.v1", "tetrascience.agents.filelog.scanStarted.v1" ] }, "minItems": 1, "description": "The types of events to subscribe to" }, "userDefinedName": { "type": "string", "pattern": "^[\\S ]*\\S[\\S ]*$", "description": "Subscription name set and displayed in the UI" }, "targetEndpoint": { "type": "string", "pattern": "arn:aws:events:.+:.+:.+", "description": "Amazon Resource Name of the bus resource where events should be sent" }, "targetType": { "type": "string", "enum": [ "BUS" ] }, "enabled": { "type": "boolean" } }, "required": [ "selectedEventTypes", "userDefinedName", "targetEndpoint", "targetType", "enabled" ] }, "BasicPipelineInputObject": { "allOf": [ { "$ref": "#/components/schemas/PipelineSettings" }, { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "ignored when provided in Query parameters" }, "orgSlug": { "type": "string", "description": "ignored when provided in URL/Headers" }, "message": { "type": "string" }, "updatedAt": { "type": "string" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineNestedLabel" } } } } ] }, "FileTriggerInputPipeline": { "allOf": [ { "$ref": "#/components/schemas/BasicPipelineInputObject" }, { "type": "object", "required": [ "triggerType", "triggerCondition" ], "properties": { "triggerType": { "type": "string", "enum": [ "custom" ] }, "triggerCondition": { "oneOf": [ { "type": "object", "additionalProperties": false }, { "$ref": "#/components/schemas/TriggerConditionGroup" } ] } } } ] }, "ScheduledTriggerInputPipeline": { "allOf": [ { "$ref": "#/components/schemas/BasicPipelineInputObject" }, { "type": "object", "required": [ "triggerType", "triggerCondition" ], "properties": { "triggerType": { "type": "string", "enum": [ "sched" ] }, "triggerCondition": { "type": "object", "required": [ "cron", "tz" ], "properties": { "cron": { "type": "string" }, "tz": { "type": "string" } } } } } ] }, "PipelineInputObject": { "oneOf": [ { "$ref": "#/components/schemas/FileTriggerInputPipeline" }, { "$ref": "#/components/schemas/ScheduledTriggerInputPipeline" } ] }, "PipelineSettings": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "description": { "oneOf": [ { "type": "null" }, { "type": "string" } ] }, "protocolSlug": { "oneOf": [ { "type": "null" }, { "type": "string" } ], "deprecated": true }, "protocolVersion": { "oneOf": [ { "type": "null" }, { "type": "string" } ], "deprecated": true }, "priority": { "type": "integer", "default": 5 }, "retryBehavior": { "oneOf": [ { "type": "null" }, { "type": "string", "enum": [ "off", "oom_only", "linear", "constant", "exponential" ] } ] }, "retryConfiguration": { "type": "object", "properties": { "baseDelaySeconds": { "type": "integer", "minimum": 0 }, "maxRetries": { "type": "integer", "minimum": 0 } } }, "standby": { "oneOf": [ { "type": "null" }, { "type": "integer" } ] }, "status": { "oneOf": [ { "type": "null" }, { "type": "string", "enum": [ "disabled" ] } ] }, "taskScriptTimeoutMins": { "oneOf": [ { "type": "null" }, { "type": "integer" } ] }, "maxParallelWorkflows": { "type": "integer", "default": 0 }, "createdAt": { "type": "string" }, "pipelineConfig": { "$ref": "#/components/schemas/PipelineConfig" }, "stepsConfig": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/StepsConfig" }, "default": {} }, "artifactType": { "type": "string", "enum": [ "protocol", "tetraflow" ], "default": "protocol" }, "clusterId": { "deprecated": true, "oneOf": [ { "type": "null" }, { "type": "string" } ], "description": "DEPRECATED: Prefer clusterPolicyId for cost-effective ephemeral job clusters." }, "clusterPolicyId": { "oneOf": [ { "type": "null" }, { "type": "string" } ], "description": "Databricks cluster policy ID for job clusters. Preferred over clusterId for cost-effective ephemeral compute. Takes precedence if both are provided." }, "runOnDeleted": { "type": "boolean", "default": false }, "masterScriptNamespace": { "oneOf": [ { "type": "string" }, { "type": "null" } ] }, "masterScriptVersion": { "oneOf": [ { "type": "string" }, { "type": "null" } ] }, "masterScriptSlug": { "oneOf": [ { "type": "string" }, { "type": "null" } ] }, "inlineArtifact": { "oneOf": [ { "type": "object", "format": "unknown" }, { "type": "null" } ] } } }, "BasicPipelineOutputObject": { "allOf": [ { "$ref": "#/components/schemas/PipelineSettings" }, { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "ignored when provided in Query parameters" }, "orgSlug": { "type": "string", "description": "ignored when provided in URL/Headers" }, "revision": { "type": "number" }, "updatedAt": { "type": "string" }, "protocolSchema": { "type": "string", "enum": [ "v2", "v3", "tfv1" ] }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineNestedLabel" } } } } ] }, "FileTriggerOutputPipeline": { "allOf": [ { "$ref": "#/components/schemas/BasicPipelineOutputObject" }, { "type": "object", "required": [ "triggerType", "triggerCondition" ], "properties": { "triggerType": { "type": "string", "enum": [ "custom" ] }, "triggerCondition": { "oneOf": [ { "type": "object", "additionalProperties": false }, { "$ref": "#/components/schemas/TriggerConditionGroup" } ] } } } ] }, "ScheduledTriggerOutputPipeline": { "allOf": [ { "$ref": "#/components/schemas/BasicPipelineOutputObject" }, { "type": "object", "required": [ "triggerType", "triggerCondition" ], "properties": { "triggerType": { "type": "string", "enum": [ "sched" ] }, "triggerCondition": { "type": "object", "required": [ "cron", "tz" ], "properties": { "cron": { "type": "string" }, "tz": { "type": "string", "description": "Java Timezone https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html" } } } } } ] }, "PipelineOutputObject": { "oneOf": [ { "$ref": "#/components/schemas/FileTriggerOutputPipeline" }, { "$ref": "#/components/schemas/ScheduledTriggerOutputPipeline" } ] }, "PipelineNestedLabel": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" } } }, "PipelineConfig": { "type": "object", "additionalProperties": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "array", "items": {} }, { "type": "string" }, { "type": "integer" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "ssm": { "type": "string" }, "secret": { "type": "boolean" } } } ] } }, "StepsConfig": { "type": "object", "properties": { "memoryInMB": { "type": "integer" }, "runInLambda": { "type": "boolean" } } }, "TriggerConditionGroup": { "type": "object", "required": [ "groupLevel", "groupOperator", "groups" ], "properties": { "groupLevel": { "type": "integer" }, "groupOperator": { "type": "string", "enum": [ "AND", "OR" ] }, "groups": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/TriggerConditionGroup" }, { "type": "object", "required": [ "key", "operator" ], "properties": { "key": { "type": "string" }, "operator": { "type": "string" }, "value": { "type": "string" } } } ] } } } }, "PipelineRevisionMetadata": { "type": "object", "required": [ "message", "pipelineId", "number", "userId", "createdAt" ], "properties": { "message": { "type": "string" }, "pipelineId": { "type": "string" }, "number": { "type": "number" }, "userId": { "oneOf": [ { "type": "string" }, { "type": "null" } ] }, "createdAt": { "type": "string" } } }, "PipelineRevision": { "allOf": [ { "$ref": "#/components/schemas/PipelineRevisionMetadata" }, { "$ref": "#/components/schemas/PipelineSettings" } ] }, "DatabricksClusterPolicy": { "type": "object", "required": [ "policyId", "name" ], "properties": { "policyId": { "type": "string", "description": "Canonical unique identifier for the cluster policy" }, "name": { "type": "string", "description": "Display name of the cluster policy" }, "description": { "type": "string", "description": "Description of the cluster policy" } } }, "DatabricksClusterObject": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "DMLResultChunk": { "type": "object", "required": [ "statementId", "chunkIndex", "nextChunkIndex", "data", "rowCount" ], "properties": { "statementId": { "type": "string" }, "chunkIndex": { "type": "integer" }, "nextChunkIndex": { "type": "integer", "nullable": true }, "data": { "type": "array", "items": {} }, "rowCount": { "type": "integer" } } }, "DMLResultSchemaColumn": { "type": "object", "required": [ "name", "position", "type" ], "properties": { "name": { "type": "string" }, "position": { "type": "integer" }, "type": { "type": "string" } } }, "DMLResultSchema": { "type": "object", "required": [ "columnCount", "columns" ], "properties": { "columnCount": { "type": "integer" }, "columns": { "type": "array", "items": { "$ref": "#/components/schemas/DMLResultSchemaColumn" } } } }, "DMLResult": { "type": "object", "required": [ "chunk", "resultSchema", "statementId", "totalChunks", "totalRowCount" ], "properties": { "chunk": { "$ref": "#/components/schemas/DMLResultChunk" }, "resultSchema": { "$ref": "#/components/schemas/DMLResultSchema" }, "statementId": { "type": "string" }, "totalChunks": { "type": "integer" }, "totalRowCount": { "type": "integer" } } }, "ExecuteDMLRequest": { "type": "object", "required": [ "appId", "statement", "parameters" ], "properties": { "appId": { "type": "string" }, "statement": { "type": "string" }, "parameters": { "type": "array", "items": { "type": "object", "required": [ "name", "value", "type" ], "properties": { "name": { "type": "string" }, "value": {}, "type": { "type": "string" } } } } } }, "DataAppProviderSecret": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "type": { "type": "string" }, "required": { "type": "boolean" }, "arn": { "type": "string" }, "envName": { "type": "string" } } }, "DataAppProvider": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "orgSlug": { "type": "string" }, "type": { "type": "string" }, "iconUrl": { "type": "string" }, "updatedAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedBy": { "type": "string" }, "createdBy": { "type": "string" }, "secrets": { "type": "array", "items": { "$ref": "#/components/schemas/DataAppProviderSecret" } } } }, "DataAppManaged": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "slug": { "type": "string" }, "namespace": { "type": "string" }, "iconUrl": { "type": "string" }, "type": { "type": "string" }, "artifactType": { "type": "string", "enum": [ "CONTAINER", "TETRASPHERE" ], "description": "Internal artifact type stored in the database" }, "deploymentType": { "type": "string", "enum": [ "SERVER" ], "description": "Deployment model: SERVER (ECS container, iFrame)" }, "version": { "type": "string" }, "otherVersions": { "type": "array", "items": { "type": "string" } }, "platformRequirements": { "type": "array", "items": { "type": "object", "description": "Artifact requirement (IDS or Tetraflow)", "properties": { "type": { "type": "string", "enum": [ "ids", "tetraflow" ] }, "namespace": { "type": "string" }, "slug": { "type": "string" }, "version": { "type": "string" } }, "required": [ "type", "namespace", "slug", "version" ] } }, "serviceRequirements": { "type": "array", "items": { "type": "object", "description": "Platform service requirement (e.g., AIS)", "properties": { "type": { "type": "string", "enum": [ "ais" ] }, "minVersion": { "type": "string" }, "maxVersion": { "type": "string" } }, "required": [ "type", "minVersion" ] } }, "supportedPlatformVersion": { "type": "object", "description": "The supported platform version range for this data app", "properties": { "minVersion": { "type": "string" }, "maxVersion": { "type": "string" } } } } }, "DataApp": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "description": { "type": "string" }, "url": { "type": "string", "description": "If type is CONNECTED then the url to the external running application" }, "iconUrl": { "type": "string" }, "type": { "type": "string", "description": "The type of data app. Must be either \"CONNECTED\" or \"CONTAINER\"" }, "artifactType": { "type": "string", "enum": [ "CONTAINER", "TETRASPHERE" ], "description": "Internal artifact type stored in the database" }, "deploymentType": { "type": "string", "enum": [ "SERVER" ], "description": "Deployment model: SERVER (ECS container, iFrame)" }, "slug": { "type": "string" }, "version": { "type": "string" }, "otherVersions": { "type": "array", "items": { "type": "string" } }, "running": { "type": "boolean", "description": "Whether the container data app is running" }, "namespace": { "type": "string", "description": "The namespace of the data app" }, "platformRequirements": { "type": "array", "items": { "type": "object", "description": "Artifact requirement (IDS or Tetraflow)", "properties": { "type": { "type": "string", "enum": [ "ids", "tetraflow" ] }, "namespace": { "type": "string" }, "slug": { "type": "string" }, "version": { "type": "string" } }, "required": [ "type", "namespace", "slug", "version" ] } }, "serviceRequirements": { "type": "array", "items": { "type": "object", "description": "Platform service requirement (e.g., AIS)", "properties": { "type": { "type": "string", "enum": [ "ais" ] }, "minVersion": { "type": "string" }, "maxVersion": { "type": "string" } }, "required": [ "type", "minVersion" ] } }, "supportedPlatformVersion": { "type": "object", "description": "The supported platform version range for this data app", "properties": { "minVersion": { "type": "string" }, "maxVersion": { "type": "string" } } }, "artifactLabels": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } }, "labels": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } }, "providers": { "type": "array", "items": { "$ref": "#/components/schemas/DataAppProvider" } } } }, "PaginatedDataApp": { "type": "object", "properties": { "dataApps": { "type": "array", "items": { "$ref": "#/components/schemas/DataApp" } }, "count": { "type": "integer" } } }, "ConnectorKeyValue": { "type": "object", "required": [ "key", "secure", "createdAt", "updatedAt" ], "properties": { "key": { "type": "string" }, "value": {}, "secure": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "DataAppProviderTemplateField": { "type": "object", "properties": { "name": { "type": "string" }, "display": { "type": "string" }, "type": { "type": "string" }, "required": { "type": "boolean" } } }, "DataAppProviderTemplate": { "type": "object", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "iconUrl": { "type": "string" }, "fields": { "type": "array", "items": { "$ref": "#/components/schemas/DataAppProviderTemplateField" } } } }, "PaginatedDataAppProvider": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/DataAppProvider" } }, "count": { "type": "integer" } } }, "AccessGroupSummary": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the group.", "format": "uuid" }, "name": { "type": "string", "description": "The name of the group." }, "description": { "type": "string", "nullable": true, "description": "The description of the group." } }, "required": [ "id", "name" ] }, "AccessGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the group.", "format": "uuid" }, "name": { "type": "string", "description": "The name of the group." }, "description": { "type": "string", "nullable": true, "description": "The description of the group." }, "orgSlug": { "type": "string", "description": "The organization's slug to which the group belongs." }, "enabled": { "type": "boolean", "description": "Indicates whether the group is enabled or not." }, "userIds": { "type": "array", "nullable": true, "description": "List of user IDs associated with the group.", "items": { "type": "string", "format": "uuid" } }, "rules": { "$ref": "#/components/schemas/AttributeRuleConfiguration" }, "updatedAt": { "type": "string", "nullable": true, "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "name", "orgSlug", "enabled", "rules", "createdAt" ] }, "FilterCategoryConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "is", "is not" ] }, "value": { "items": { "type": "string", "enum": [ "ids", "raw", "processed" ] }, "type": "array" }, "type": { "enum": [ "category" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterCreatedAtConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "between", "greater than", "greater than or equal to", "less than", "less than or equal to" ] }, "value": { "type": "string" }, "type": { "enum": [ "created-at" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterFilePathConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "contains", "does not contain", "is", "is not", "begins with", "ends with" ] }, "value": { "type": "string" }, "type": { "enum": [ "file-path" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "title": "FilterFilePathConfig", "type": "object" }, "FilterIDSConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "is", "is not" ] }, "value": { "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "ids" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterIDSTypeConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "is", "is not" ] }, "value": { "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "ids-type" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterLabelConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "contains", "is", "is not", "exists", "does not exist" ] }, "value": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" }, { "type": "boolean" } ] }, "type": { "enum": [ "label" ], "type": "string" }, "label": { "type": "string" } }, "required": [ "operator", "type", "label" ], "additionalProperties": false, "type": "object" }, "FilterMetadatumConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "contains", "is", "exists", "does not exist" ] }, "value": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" }, { "type": "boolean" } ] }, "type": { "enum": [ "metadatum" ], "type": "string" }, "metadatum": { "type": "string" } }, "required": [ "operator", "type", "metadatum" ], "additionalProperties": false, "type": "object" }, "FilterOrConfig": { "properties": { "id": { "type": "string" }, "value": { "items": { "$ref": "#/components/schemas/FilterConfig" }, "type": "array" }, "type": { "enum": [ "or" ], "type": "string" } }, "required": [ "type" ], "additionalProperties": false, "type": "object" }, "FilterAndConfig": { "properties": { "id": { "type": "string" }, "value": { "items": { "$ref": "#/components/schemas/FilterConfig" }, "type": "array" }, "type": { "enum": [ "and" ], "type": "string" } }, "required": [ "type" ], "additionalProperties": false, "type": "object" }, "FilterPipelineConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "is", "is not" ] }, "value": { "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "pipeline" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterSourceNameConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "is", "is not" ] }, "value": { "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "source-name" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterSourceTypeConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "is", "is not" ] }, "value": { "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "source-type" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterTagConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "has a tag that is", "does not have a tag that is" ] }, "value": { "type": "boolean" }, "type": { "enum": [ "tag" ], "type": "string" }, "tag": { "type": "string" } }, "required": [ "operator", "type", "tag" ], "additionalProperties": false, "type": "object" }, "FilterTagNameConfig": { "properties": { "id": { "type": "string" }, "operator": { "type": "string", "enum": [ "has one that begins with", "has one that ends with" ] }, "value": { "type": "string" }, "type": { "enum": [ "tag-name" ], "type": "string" } }, "required": [ "operator", "type" ], "additionalProperties": false, "type": "object" }, "FilterLeaf": { "anyOf": [ { "$ref": "#/components/schemas/FilterCategoryConfig" }, { "$ref": "#/components/schemas/FilterCreatedAtConfig" }, { "$ref": "#/components/schemas/FilterFilePathConfig" }, { "$ref": "#/components/schemas/FilterIDSConfig" }, { "$ref": "#/components/schemas/FilterIDSTypeConfig" }, { "$ref": "#/components/schemas/FilterLabelConfig" }, { "$ref": "#/components/schemas/FilterMetadatumConfig" }, { "$ref": "#/components/schemas/FilterPipelineConfig" }, { "$ref": "#/components/schemas/FilterSourceNameConfig" }, { "$ref": "#/components/schemas/FilterSourceTypeConfig" }, { "$ref": "#/components/schemas/FilterTagConfig" }, { "$ref": "#/components/schemas/FilterTagNameConfig" } ] }, "FilterConfig": { "anyOf": [ { "$ref": "#/components/schemas/FilterOrConfig" }, { "$ref": "#/components/schemas/FilterAndConfig" }, { "$ref": "#/components/schemas/FilterLeaf" } ] }, "FilterAllowAllConfig": { "properties": { "type": { "enum": [ "allow-all" ], "type": "string" } }, "required": [ "type" ], "additionalProperties": false, "type": "object" }, "AttributeRule": { "properties": { "filters": { "anyOf": [ { "$ref": "#/components/schemas/FilterOrConfig" }, { "$ref": "#/components/schemas/FilterAndConfig" }, { "$ref": "#/components/schemas/FilterAllowAllConfig" } ] } }, "required": [ "filters" ], "additionalProperties": false, "type": "object" }, "AttributeRuleConfiguration": { "additionalProperties": { "$ref": "#/components/schemas/AttributeRule" }, "type": "object" }, "ArtifactNamespace": { "type": "string", "pattern": "^(common|(private|client)-).*$" }, "ArtifactObjectBase": { "type": "object", "properties": { "namespace": { "$ref": "#/components/schemas/ArtifactNamespace" }, "slug": { "type": "string" }, "version": { "type": "string" }, "name": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "lastUpdatedAt": { "type": "string", "format": "date-time" }, "otherVersions": { "type": "array", "items": { "type": "string" } }, "supportedPlatformVersion": { "$ref": "#/components/schemas/SupportedPlatformVersion" } }, "required": [ "namespace", "slug", "version", "createdAt", "lastUpdatedAt" ] }, "AiWorkflowObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ai-workflow" ] } }, "required": [ "type" ] } ], "example": { "type": "ai-workflow", "namespace": "private-test", "slug": "mlflow", "version": "v0.5.0", "createdAt": "2024-04-25T15:15:34.269Z", "lastUpdatedAt": "2023-04-25T17:15:34.269Z", "name": "MLflow workflow", "description": "An MLflow workflow", "otherVersions": [ "v0.1.0", "v0.5.0" ] } }, "SupportedPlatformVersion": { "type": "object", "nullable": true, "properties": { "minPlatformVersion": { "type": "string", "nullable": false }, "maxPlatformVersion": { "type": "string", "nullable": true } } }, "AiWorkflowObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/AiWorkflowObject" } }, "AiWorkflowFileSlug": { "type": "string", "enum": [ "build", "manifest", "readme", "source", "databricksYml" ] }, "LabelList": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "required": [ "name", "value" ], "additionalProperties": false }, "example": [ { "name": "label1", "value": "value1" }, { "name": "another-label", "value": "another-value" } ] }, "EventbridgeEventType": { "type": "string", "enum": [ "tetrascience.file.RegistrationSucceeded.v1", "tetrascience.file.RegistrationFailed.v1", "tetrascience.file.SearchIndexingSucceeded.v1", "tetrascience.file.SearchIndexingFailed.v1", "tetrascience.file.SQLIndexingSucceeded.v1", "tetrascience.file.SQLIndexingFailed.v1", "tetrascience.file.WorkflowCreated.v1", "tetrascience.file.WorkflowInProgress.v1", "tetrascience.file.WorkflowSucceeded.v1", "tetrascience.file.WorkflowFailed.v1", "tetrascience.file.WorkflowCanceled.v1", "tetrascience.agents.common.heartbeat.v1", "tetrascience.agents.common.agentStarted.v1", "tetrascience.agents.common.agentStopped.v1", "tetrascience.agents.filelog.archiveFileDeleteCompleted.v1", "tetrascience.agents.filelog.archiveFileDeleteFailed.v1", "tetrascience.agents.filelog.fileArchiveCompleted.v1", "tetrascience.agents.filelog.fileArchiveFailed.v1", "tetrascience.agents.filelog.fileArchiveSkipped.v1", "tetrascience.agents.filelog.fileArchiveStarted.v1", "tetrascience.agents.filelog.fileScanned.v1", "tetrascience.agents.filelog.fileUploadCompleted.v1", "tetrascience.agents.filelog.fileUploadFailed.v1", "tetrascience.agents.filelog.fileUploadStarted.v1", "tetrascience.agents.filelog.pathValidationFailed.v1", "tetrascience.agents.filelog.scanCompleted.v1", "tetrascience.agents.filelog.scanError.v1", "tetrascience.agents.filelog.scanStarted.v1" ] }, "ConnectorObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "connector" ] }, "iconPresignedUrl": { "type": "string", "nullable": true } }, "required": [ "type", "iconPresignedUrl" ] } ], "example": { "type": "connector", "namespace": "common", "slug": "akta", "version": "v1.2.0", "name": null, "description": null, "iconPresignedUrl": "https://localhost/some_long_url", "createdAt": "2023-02-16T15:15:34.269Z", "lastUpdatedAt": "2023-02-16T15:15:34.269Z", "otherVersions": [ "v2.0.0", "v1.3.0", "v1.2.0", "v1.0.0" ] } }, "ConnectorObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectorObject" } }, "ConnectorFileSlug": { "type": "string", "enum": [ "build", "manifest", "readme", "source", "image" ] }, "Key": { "type": "object", "properties": { "type": { "type": "string" }, "namespace": { "$ref": "#/components/schemas/ArtifactNamespace" }, "slug": { "type": "string" }, "version": { "type": "string" } }, "required": [ "type", "namespace", "slug", "version" ], "example": { "type": "ids", "namespace": "common", "slug": "akta", "version": "v1.1.0" } }, "Relationships": { "type": "object", "properties": { "ids": { "type": "array", "items": { "$ref": "#/components/schemas/Key" } }, "taskScripts": { "type": "array", "items": { "$ref": "#/components/schemas/Key" } }, "protocols": { "type": "array", "items": { "$ref": "#/components/schemas/Key" } }, "connectors": { "type": "array", "items": { "$ref": "#/components/schemas/Key" } } }, "additionalProperties": false }, "IdsObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ids" ] }, "iconPresignedUrl": { "type": "string", "nullable": true } }, "required": [ "type", "iconPresignedUrl" ] } ], "example": { "type": "ids", "namespace": "common", "slug": "akta", "version": "v1.2.0", "name": null, "description": null, "iconPresignedUrl": "https://localhost/some_long_url", "createdAt": "2023-02-16T15:15:34.269Z", "lastUpdatedAt": "2023-02-16T15:15:34.269Z", "otherVersions": [ "v2.0.0", "v1.3.0", "v1.2.0", "v1.0.0" ] } }, "IdsObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/IdsObject" } }, "IdsFileSlug": { "type": "string", "enum": [ "athena", "build", "elasticsearch", "erd", "expected", "manifest", "readme", "schema", "source", "mapping" ] }, "LakehouseObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "lakehouse" ] } }, "required": [ "type" ] } ], "example": { "type": "lakehouse", "namespace": "common", "slug": "datacubes", "version": "v1.1.0", "createdAt": "2024-04-25T15:15:34.269Z", "lastUpdatedAt": "2023-04-25T17:15:34.269Z", "name": "Datacubes lakehouse", "description": "A lakehouse for datacubes", "otherVersions": [ "v1.0.0", "v1.1.0" ] } }, "LakehouseObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/LakehouseObject" } }, "LakehouseFileSlug": { "type": "string", "enum": [ "build", "manifest", "source", "databricksYml" ] }, "ProtocolObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "protocol" ] }, "protocolSchema": { "type": "string", "enum": [ "v2", "v3", "tfv1" ] }, "triggerTypeFile": { "type": "boolean" }, "triggerTypeScheduled": { "type": "boolean" } }, "required": [ "type", "protocolSchema", "triggerTypeFile", "triggerTypeScheduled" ] } ], "example": { "type": "protocol", "namespace": "common", "slug": "akta", "version": "v1.2.18", "createdAt": "2023-02-16T15:15:34.269Z", "lastUpdatedAt": "2023-02-16T15:15:34.269Z", "name": "A demo protocol", "description": "The description for the demo protocol", "otherVersions": [ "v1.2.18", "v1.2.17", "v1.1.0", "v0.0.10" ] } }, "ProtocolObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/ProtocolObject" } }, "ProtocolFileSlug": { "type": "string", "enum": [ "build", "manifest", "protocol", "readme", "script", "source", "protocolYml" ] }, "SchemaObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "schema" ] } }, "required": [ "type" ] } ], "example": { "type": "schema", "namespace": "private-test", "slug": "tabular", "version": "v0.5.0", "createdAt": "2024-04-25T15:15:34.269Z", "lastUpdatedAt": "2023-04-25T17:15:34.269Z", "name": "Tabular schema", "description": "A tabular schema", "otherVersions": [ "v0.1.0", "v0.5.0" ] } }, "SchemaObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/SchemaObject" } }, "SchemaFileSlug": { "type": "string", "enum": [ "build", "manifest", "readme", "source", "schema", "expected" ] }, "EventbridgeSubscriptionFull": { "type": "object", "properties": { "id": { "type": "string" }, "orgSlug": { "type": "string" }, "selectedEventTypes": { "type": "array", "items": { "type": "string", "enum": [ "tetrascience.file.RegistrationSucceeded.v1", "tetrascience.file.RegistrationFailed.v1", "tetrascience.file.SearchIndexingSucceeded.v1", "tetrascience.file.SearchIndexingFailed.v1", "tetrascience.file.SQLIndexingSucceeded.v1", "tetrascience.file.SQLIndexingFailed.v1", "tetrascience.file.WorkflowCreated.v1", "tetrascience.file.WorkflowInProgress.v1", "tetrascience.file.WorkflowSucceeded.v1", "tetrascience.file.WorkflowFailed.v1", "tetrascience.file.WorkflowCanceled.v1", "tetrascience.agents.common.heartbeat.v1", "tetrascience.agents.common.agentStarted.v1", "tetrascience.agents.common.agentStopped.v1", "tetrascience.agents.filelog.archiveFileDeleteCompleted.v1", "tetrascience.agents.filelog.archiveFileDeleteFailed.v1", "tetrascience.agents.filelog.fileArchiveCompleted.v1", "tetrascience.agents.filelog.fileArchiveFailed.v1", "tetrascience.agents.filelog.fileArchiveSkipped.v1", "tetrascience.agents.filelog.fileArchiveStarted.v1", "tetrascience.agents.filelog.fileScanned.v1", "tetrascience.agents.filelog.fileUploadCompleted.v1", "tetrascience.agents.filelog.fileUploadFailed.v1", "tetrascience.agents.filelog.fileUploadStarted.v1", "tetrascience.agents.filelog.pathValidationFailed.v1", "tetrascience.agents.filelog.scanCompleted.v1", "tetrascience.agents.filelog.scanError.v1", "tetrascience.agents.filelog.scanStarted.v1" ] }, "minItems": 1, "description": "The types of events to subscribe to" }, "userDefinedName": { "type": "string", "pattern": "^[\\S ]*\\S[\\S ]*$", "description": "Subscription name set and displayed in the UI" }, "targetEndpoint": { "type": "string", "pattern": "arn:aws:events:.+:.+:.+", "description": "Amazon Resource Name of the bus resource where events should be sent" }, "targetType": { "type": "string", "enum": [ "BUS" ] }, "enabled": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "lastUpdatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "orgSlug", "selectedEventTypes", "userDefinedName", "targetEndpoint", "targetType", "enabled", "createdAt", "lastUpdatedAt" ] }, "TaskScriptObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "task-script" ] }, "sdkVersion": { "type": "string", "nullable": true }, "hash": { "type": "string", "nullable": true } }, "required": [ "type", "sdkVersion", "hash" ] } ], "example": { "type": "task-script", "namespace": "common", "slug": "akta", "version": "v1.1.0", "name": null, "description": null, "sdkVersion": "v1.2.0", "hash": "aaabbbccc000111222333", "createdAt": "2023-02-16T15:15:34.269Z", "lastUpdatedAt": "2023-02-16T15:15:34.269Z", "otherVersions": [ "v1.1.0", "v1.0.9", "v1.0.5", "v0.0.3" ] } }, "TaskScriptObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/TaskScriptObject" } }, "TaskScriptFileSlug": { "type": "string", "enum": [ "build", "buildlog", "manifest", "readme", "source" ] }, "TetraflowObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "tetraflow" ] } }, "required": [ "type" ] } ], "example": { "type": "tetraflow", "namespace": "common", "slug": "simplo", "version": "v1.0.2", "createdAt": "2024-04-25T15:15:34.269Z", "lastUpdatedAt": "2023-04-25T17:15:34.269Z", "name": "A demo tetraflow", "description": "The description for the demo tetraflow powering the simplo use case", "otherVersions": [ "v1.0.0", "v1.0.1" ] } }, "TetraflowObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/TetraflowObject" } }, "TetraflowFileSlug": { "type": "string", "enum": [ "build", "manifest", "readme", "source", "protocol", "tetraflowYml", "generated" ] }, "TetrasphereObject": { "allOf": [ { "$ref": "#/components/schemas/ArtifactObjectBase" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "tetrasphere" ] } }, "required": [ "type" ] } ], "example": { "type": "tetrasphere", "namespace": "private-test", "slug": "tetrasphere", "version": "v0.5.0", "createdAt": "2024-04-25T15:15:34.269Z", "lastUpdatedAt": "2023-04-25T17:15:34.269Z", "name": "Tetrasphere", "description": "A tetrasphere", "otherVersions": [ "v0.1.0", "v0.5.0" ] } }, "TetrasphereObjectList": { "type": "array", "items": { "$ref": "#/components/schemas/TetrasphereObject" } }, "TetrasphereFileSlug": { "type": "string", "enum": [ "build", "manifest", "readme", "source", "distZip" ] }, "HubsResponse": { "type": "object", "properties": { "hubs": { "type": "array", "items": { "$ref": "#/components/schemas/HubDto" } } }, "required": [ "hubs" ] }, "HubConnectorDto": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "artifact": { "$ref": "#/components/schemas/ArtifactDto" }, "hostType": { "type": "string", "description": "The type of host the Connector is running on.", "enum": [ "cloud", "hub" ] }, "health": { "type": "string" }, "healthErrorCode": { "type": "string" }, "operatingStatus": { "type": "string" }, "networkStatus": { "type": "string" }, "lastSeenAt": { "format": "date-time", "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "createdAt": { "format": "date-time", "type": "string" } }, "required": [ "id", "name", "artifact", "hostType", "health", "healthErrorCode", "operatingStatus", "networkStatus", "lastSeenAt", "updatedAt", "createdAt" ] }, "HubDetailsDto": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "orgSlug": { "type": "string" }, "description": { "type": "string" }, "httpProxyHost": { "type": "string" }, "httpProxyPort": { "type": "number" }, "httpProxyUsername": { "type": "string" }, "httpsProxyHost": { "type": "string" }, "httpsProxyPort": { "type": "number" }, "httpsProxyUsername": { "type": "string" }, "noProxy": { "type": "string" }, "l7ProxyForwardPort": { "type": "number" }, "l7ProxyReverseHttpPort": { "type": "number" }, "l7ProxyReverseHttpsPort": { "type": "number" }, "l7ProxySocatPort": { "type": "number" }, "l7ProxyReverseMqttPort": { "type": "number" }, "l7ProxySocatMqttPort": { "type": "number" }, "l7ProxyLocalnets": { "type": "string" }, "l7ProxyDnsNameservers": { "type": "string" }, "l7ProxyWhitelist": { "type": "string" }, "l7ProxyMaximumMemoryMb": { "type": "number" }, "enabled": { "type": "boolean" }, "status": { "$ref": "#/components/schemas/HubStatusDto" }, "host": { "$ref": "#/components/schemas/HubHostDto" }, "updatedAt": { "format": "date-time", "type": "string" }, "createdAt": { "format": "date-time", "type": "string" }, "activationExpiresAt": { "format": "date-time", "type": "string" }, "ssmInstanceId": { "type": "string" }, "ecsContainerInstanceArn": { "type": "string" }, "connectors": { "type": "array", "items": { "$ref": "#/components/schemas/HubConnectorDto" } } }, "required": [ "id", "name", "orgSlug", "description", "httpProxyHost", "httpProxyPort", "httpProxyUsername", "httpsProxyHost", "httpsProxyPort", "httpsProxyUsername", "noProxy", "l7ProxyForwardPort", "l7ProxyReverseHttpPort", "l7ProxyReverseHttpsPort", "l7ProxySocatPort", "l7ProxyReverseMqttPort", "l7ProxySocatMqttPort", "l7ProxyLocalnets", "l7ProxyDnsNameservers", "l7ProxyWhitelist", "l7ProxyMaximumMemoryMb", "enabled", "status", "host", "updatedAt", "createdAt", "activationExpiresAt", "ssmInstanceId", "ecsContainerInstanceArn", "connectors" ] }, "DataAppConnectorKeyValueKeysResponse": { "type": "object", "properties": { "keys": { "type": "array", "items": { "type": "string" } } } }, "CreateUpdateAccessGroup": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the group.", "maxLength": 100, "minLength": 1 }, "description": { "type": "string", "nullable": true, "description": "The description of the group.", "maxLength": 1000 }, "enabled": { "type": "boolean", "description": "Indicates whether the group is enabled or not." }, "rules": { "$ref": "#/components/schemas/AttributeRuleConfiguration" }, "ssoGroupMappings": { "type": "array", "default": [], "items": { "type": "string", "description": "The SSO group name." } } }, "required": [ "name", "enabled", "rules" ] }, "SaveDataAppConnectorKeyValuesRequest": { "type": "object", "required": [ "values" ], "properties": { "values": { "type": "array", "items": { "type": "object", "required": [ "key", "value" ], "properties": { "key": { "type": "string", "pattern": "^[^,]+$", "description": "Connector key. Commas are not allowed." }, "value": {}, "secure": { "type": "boolean" } } } } } }, "ConnectorKeyValuesResponse": { "type": "object", "properties": { "values": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectorKeyValue" } } } }, "EventbridgeSubscriptionUpdate": { "type": "object", "properties": { "selectedEventTypes": { "type": "array", "items": { "type": "string", "enum": [ "tetrascience.file.RegistrationSucceeded.v1", "tetrascience.file.RegistrationFailed.v1", "tetrascience.file.SearchIndexingSucceeded.v1", "tetrascience.file.SearchIndexingFailed.v1", "tetrascience.file.SQLIndexingSucceeded.v1", "tetrascience.file.SQLIndexingFailed.v1", "tetrascience.file.WorkflowCreated.v1", "tetrascience.file.WorkflowInProgress.v1", "tetrascience.file.WorkflowSucceeded.v1", "tetrascience.file.WorkflowFailed.v1", "tetrascience.file.WorkflowCanceled.v1", "tetrascience.agents.common.heartbeat.v1", "tetrascience.agents.common.agentStarted.v1", "tetrascience.agents.common.agentStopped.v1", "tetrascience.agents.filelog.archiveFileDeleteCompleted.v1", "tetrascience.agents.filelog.archiveFileDeleteFailed.v1", "tetrascience.agents.filelog.fileArchiveCompleted.v1", "tetrascience.agents.filelog.fileArchiveFailed.v1", "tetrascience.agents.filelog.fileArchiveSkipped.v1", "tetrascience.agents.filelog.fileArchiveStarted.v1", "tetrascience.agents.filelog.fileScanned.v1", "tetrascience.agents.filelog.fileUploadCompleted.v1", "tetrascience.agents.filelog.fileUploadFailed.v1", "tetrascience.agents.filelog.fileUploadStarted.v1", "tetrascience.agents.filelog.pathValidationFailed.v1", "tetrascience.agents.filelog.scanCompleted.v1", "tetrascience.agents.filelog.scanError.v1", "tetrascience.agents.filelog.scanStarted.v1" ] }, "minItems": 1, "description": "The types of events to subscribe to" }, "userDefinedName": { "type": "string", "pattern": "^[\\S ]*\\S[\\S ]*$", "description": "Subscription name set and displayed in the UI" }, "targetEndpoint": { "type": "string", "pattern": "arn:aws:events:.+:.+:.+", "description": "Amazon Resource Name of the bus resource where events should be sent" }, "targetType": { "type": "string", "enum": [ "BUS" ] }, "enabled": { "type": "boolean" } } } }, "securitySchemes": { "token": { "type": "apiKey", "description": "JWT Token for authentication", "in": "header", "name": "ts-auth-token" }, "orgSlug": { "type": "apiKey", "description": "Your organization slug", "in": "header", "name": "x-org-slug" }, "tsAuthToken": { "type": "apiKey", "in": "header", "name": "ts-auth-token" } }, "parameters": { "LatestOnlyQuery": { "description": "Only return the latest version of each artifact", "name": "latest_only", "in": "query", "required": false, "schema": { "type": "boolean" }, "example": true }, "IncludePrereleasesQuery": { "description": "Include prerelease artifacts in search", "name": "include_prereleases", "in": "query", "required": false, "schema": { "type": "boolean" }, "example": true }, "ArtifactNamespace": { "description": "Artifact namespace. Should be common, private-*, or client-*", "in": "path", "name": "namespace", "required": true, "schema": { "$ref": "#/components/schemas/ArtifactNamespace" }, "example": "common" }, "ArtifactSlug": { "description": "Artifact slug", "name": "slug", "in": "path", "required": true, "schema": { "type": "string" }, "example": "demo-slug" }, "DownloadQuery": { "name": "download", "in": "query", "description": "If set to true, return a download url", "required": false, "schema": { "type": "boolean" } }, "ArtifactVersion": { "description": "Artifact version", "name": "version", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^v(\\d+|x)\\.(\\d+|x)\\.(\\d+|x)(-.*)?$" }, "example": "v1.0.0" }, "AiWorkflowFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within an ai-workflow", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/AiWorkflowFileSlug" }, "example": "build" }, "ArtifactNamespaceTypeQuery": { "description": "Namespace type of artifacts to be returned ('common', 'client', or 'private')", "name": "namespace_type", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "common", "client", "private" ] }, "example": "client" }, "ConnectorFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a Connector", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/ConnectorFileSlug" }, "example": "build" }, "IdsFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within an IDS", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/IdsFileSlug" }, "example": "build" }, "LakehouseFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a lakehouse", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/LakehouseFileSlug" }, "example": "build" }, "ProtocolFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a protocol", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/ProtocolFileSlug" }, "example": "build" }, "SchemaFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a schema", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/SchemaFileSlug" }, "example": "build" }, "TaskScriptFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a task-script", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/TaskScriptFileSlug" }, "example": "build" }, "TetraflowFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a tetraflow", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/TetraflowFileSlug" }, "example": "build" }, "TetrasphereFileSlugParam": { "name": "fileSlug", "description": "File slug corresponding to file within a tetrasphere", "required": true, "in": "path", "schema": { "$ref": "#/components/schemas/TetrasphereFileSlug" }, "example": "build" }, "ValueQuery": { "name": "value", "in": "query", "description": "The search string", "required": true, "schema": { "type": "string" } }, "LimitQuery": { "name": "limit", "in": "query", "description": "The maximum number of results to return", "required": false, "schema": { "type": "integer", "minimum": 1 } } }, "responses": { "400Any": { "description": "Incorrect input provided", "content": { "application/json": { "schema": {}, "example": { "error": "Bad Request", "message": "Invalid parameters provided." } } } }, "404Any": { "description": "Not found or not visible to user", "content": { "application/json": { "schema": {}, "example": { "error": "Not Found", "message": "Subscription not found" } } } }, "500Any": { "description": "Internal error managing rules on eventbridge", "content": { "application/json": { "schema": {}, "example": { "error": "Internal DB Error", "message": "Internal error with teh database" } } } }, "501Any": { "description": "Internal error managing rules on eventbridge", "content": { "application/json": { "schema": {}, "example": { "error": "Internal Eventbridge Error", "message": "Internal error managing rules on eventbridge" } } } }, "200Any": { "description": "Success", "content": { "application/json": { "schema": {} } } }, "200PipelineObject": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineOutputObject" } } } }, "200PipelineIdsList": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "401Any": { "description": "Unauthorized", "content": { "application/json": { "schema": {}, "example": { "error": "Unauthorized", "message": "Missing authentication." } } } }, "200AiWorkflowObjectList": { "description": "Successfully fetched AiWorkflowObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiWorkflowObjectList" } } } }, "200File": { "description": "Successfully fetched file", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "properties": { "url": { "type": "string" } }, "required": [ "url" ], "additionalProperties": false }, { "type": "object", "properties": { "content": { "description": "Content of the file. Could be any type", "format": "unknown" } }, "required": [ "content" ], "additionalProperties": false } ], "example": { "content": "# README Contents\n\n* item 1\n* item 2\n* item 3" } } } } }, "200AiWorkflowObject": { "description": "Successfully fetched AiWorkflowObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiWorkflowObject" } } } }, "200AiWorkflowFileSlugList": { "description": "Successfully fetched available AiWorkflow file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AiWorkflowFileSlug" } } } } }, "200Labels": { "description": "Successfully fetched Labels", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LabelList" } } } }, "200ConnectorObjectList": { "description": "Successfully fetched ConnectorObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorObjectList" } } } }, "200ConnectorObject": { "description": "Successfully fetched ConnectorObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorObject" } } } }, "200ConnectorFileSlugList": { "description": "Successfully fetched available Connector file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectorFileSlug" } } } } }, "200Relationships": { "description": "Successfully fetched Relationships", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Relationships" } } } }, "200IdsObjectList": { "description": "Successfully fetched IdsObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdsObjectList" } } } }, "200IdsObject": { "description": "Successfully fetched IdsObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdsObject" } } } }, "200IdsFileSlugList": { "description": "Successfully fetched available IDS file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/IdsFileSlug" } } } } }, "200LakehouseObjectList": { "description": "Successfully fetched LakehouseObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LakehouseObjectList" } } } }, "200LakehouseObject": { "description": "Successfully fetched LakehouseObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LakehouseObject" } } } }, "200LakehouseFileSlugList": { "description": "Successfully fetched available Lakehouse file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LakehouseFileSlug" } } } } }, "200ProtocolObjectList": { "description": "Successfully fetched ProtocolObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtocolObjectList" } } } }, "200ProtocolObject": { "description": "Successfully fetched ProtocolObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtocolObject" } } } }, "200ProtocolFileSlugList": { "description": "Successfully fetched available Protocol file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ProtocolFileSlug" } } } } }, "200SchemaObjectList": { "description": "Successfully fetched SchemaObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaObjectList" } } } }, "200SchemaObject": { "description": "Successfully fetched SchemaObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaObject" } } } }, "200SchemaFileSlugList": { "description": "Successfully fetched available Schema file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SchemaFileSlug" } } } } }, "503Any": { "description": "Could not retrieve information from AWS", "content": { "application/json": { "schema": {}, "example": { "error": "Unavailable", "message": "Information could not be retrieved" } } } }, "200TaskScriptObjectList": { "description": "Successfully fetched TaskScriptObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskScriptObjectList" } } } }, "200TaskScriptObject": { "description": "Successfully fetched TaskScriptObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskScriptObject" } } } }, "200TaskScriptFileSlugList": { "description": "Successfully fetched available Task Script file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TaskScriptFileSlug" } } } } }, "200TetraflowObjectList": { "description": "Successfully fetched TetraflowObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TetraflowObjectList" } } } }, "200TetraflowObject": { "description": "Successfully fetched TetraflowObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TetraflowObject" } } } }, "200TetraflowFileSlugList": { "description": "Successfully fetched available Tetraflow file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TetraflowFileSlug" } } } } }, "200TetrasphereObjectList": { "description": "Successfully fetched TetrasphereObject list", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TetrasphereObjectList" } } } }, "200TetrasphereObject": { "description": "Successfully fetched TetrasphereObject", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TetrasphereObject" } } } }, "200TetrasphereFileSlugList": { "description": "Successfully fetched available Tetrasphere file slugs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TetrasphereFileSlug" } } } } } } } }