From 7183109573d352ed7a6b043c5d400cb5f751da22 Mon Sep 17 00:00:00 2001 From: Ashir Amin Date: Thu, 8 Oct 2026 09:56:26 -0500 Subject: [PATCH] [CD-650] Refresh swagger.json from cortexapps/schemas Re-vendor the public OpenAPI spec published from brain-backend 620ebf8446, the same spec cortex-remote-mcp is syncing. The local MCP goes from 28 to 114 tools: the create/update tools added in CD-650 plus the read tools the hosted MCP already had. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01HVwBFGH8UJyMPKFSxbAZWQ --- swagger.json | 36723 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 28032 insertions(+), 8691 deletions(-) diff --git a/swagger.json b/swagger.json index 5c05d7d..8eb7ec0 100644 --- a/swagger.json +++ b/swagger.json @@ -26,6 +26,9 @@ { "name": "Catalog Entities" }, + { + "name": "Catalogs" + }, { "name": "Custom Data" }, @@ -56,14 +59,17 @@ { "name": "Eng Intel: 2-Metrics" }, + { + "name": "Eng Intel: 3-Trace" + }, { "name": "Eng Intel: User Labels" }, { - "name": "Entity Relationship Types [Beta]" + "name": "Entity Relationship Types" }, { - "name": "Entity Relationships [Beta]" + "name": "Entity Relationships" }, { "name": "Entity Types" @@ -80,6 +86,9 @@ { "name": "Initiatives" }, + { + "name": "Integration Status" + }, { "name": "My Workspace" }, @@ -101,12 +110,18 @@ { "name": "SCIM" }, + { + "name": "Scaffolder" + }, { "name": "Scorecards" }, { "name": "Secrets" }, + { + "name": "Team Roles" + }, { "name": "Teams" }, @@ -119,12 +134,27 @@ { "name": "Teams [Departments] (legacy)" }, + { + "name": "Users" + }, + { + "name": "Verifications" + }, { "name": "Workflows" }, { "name": "[Integrations] AWS" }, + { + "name": "[Integrations] Anthropic" + }, + { + "name": "[Integrations] Apiiro" + }, + { + "name": "[Integrations] ArgoCD" + }, { "name": "[Integrations] Azure Active Directory" }, @@ -134,38 +164,140 @@ { "name": "[Integrations] Azure Resources" }, + { + "name": "[Integrations] BambooHR" + }, + { + "name": "[Integrations] Bitbucket" + }, + { + "name": "[Integrations] Bugsnag" + }, + { + "name": "[Integrations] Buildkite" + }, + { + "name": "[Integrations] Checkmarx SAST" + }, { "name": "[Integrations] CircleCI" }, + { + "name": "[Integrations] ClickUp" + }, + { + "name": "[Integrations] Codecov" + }, { "name": "[Integrations] Coralogix" }, { "name": "[Integrations] Datadog" }, + { + "name": "[Integrations] Dynatrace" + }, + { + "name": "[Integrations] Firehydrant" + }, { "name": "[Integrations] GitHub" }, { "name": "[Integrations] GitLab" }, + { + "name": "[Integrations] Harness" + }, { "name": "[Integrations] Incident.io" }, + { + "name": "[Integrations] Instana" + }, + { + "name": "[Integrations] Jenkins" + }, + { + "name": "[Integrations] Jira" + }, + { + "name": "[Integrations] Kubernetes" + }, { "name": "[Integrations] LaunchDarkly" }, + { + "name": "[Integrations] Lightstep" + }, + { + "name": "[Integrations] Mend SAST" + }, + { + "name": "[Integrations] Mend SCA" + }, { "name": "[Integrations] New Relic" }, + { + "name": "[Integrations] Okta" + }, + { + "name": "[Integrations] Opsgenie" + }, { "name": "[Integrations] PagerDuty" }, { "name": "[Integrations] Prometheus" }, + { + "name": "[Integrations] Rollbar" + }, + { + "name": "[Integrations] Rootly" + }, + { + "name": "[Integrations] Semgrep" + }, + { + "name": "[Integrations] Sentry" + }, + { + "name": "[Integrations] ServiceNow" + }, + { + "name": "[Integrations] SignalFx" + }, + { + "name": "[Integrations] Snyk" + }, { "name": "[Integrations] SonarQube" + }, + { + "name": "[Integrations] SumoLogic" + }, + { + "name": "[Integrations] Veracode" + }, + { + "name": "[Integrations] VictorOps" + }, + { + "name": "[Integrations] Wiz" + }, + { + "name": "[Integrations] Workday" + }, + { + "name": "[Integrations] xMatters" + }, + { + "name": "dev-login-controller" + }, + { + "name": "public-scim-schema-controller" } ], "paths": { @@ -244,7 +376,7 @@ } } }, - "description": "Successfully replaces configuration" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -270,7 +402,7 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Replace the existing configuration", + "summary": "Update the existing configuration", "tags": [ "[Integrations] Azure Active Directory" ], @@ -402,362 +534,174 @@ "x-cortex-mcp-enabled": "false" } }, - "/api/v1/audit-logs": { - "get": { - "description": "Note: To see the complete list of possible values, please reference the available filter options for [audit logs under Settings in the app](https://app.getcortexapp.com/admin/settings/audit-logs). API key must have the `View audit logs` permission.", - "operationId": "getAuditLogs", - "parameters": [ - { - "in": "query", - "name": "startTime", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "in": "query", - "name": "endTime", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "in": "query", - "name": "actions", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CREATE", - "READ", - "UPDATE", - "DELETE" - ] - } - } - }, - { - "in": "query", - "name": "objectIdentifiers", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "description": "Filter by Cortex object types (CATALOG, SERVICE, TEAM, SCORECARD, etc), integration configurations (AWS_CONFIGURATION, BITBUCKET_CONFIGURATION, etc), and more.", - "in": "query", - "name": "objectTypes", - "required": false, - "schema": { - "type": "string", - "enum": [ - "CATALOG", - "TEAM", - "AWS_CONFIGURATION", - "BITBUCKET_CONFIGURATION" - ] - } - }, - { - "in": "query", - "name": "actorTypes", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "API_KEY", - "PERSONAL_API_KEY", - "OAUTH2", - "BACKSTAGE", - "ANONYMOUS" - ] - } - } - }, - { - "in": "query", - "name": "actorApiKeyIdentifiers", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "/api/v1/anthropic/configuration": { + "post": { + "operationId": "AnthropicSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnthropicConfigurationRequest" } } }, - { - "in": "query", - "name": "actorEmails", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseAnthropicConfiguration" + } } - } + }, + "description": "Successfully added configuration" }, - { - "in": "query", - "name": "actorIpAddresses", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } + }, + "description": "Bad Request" }, - { - "in": "query", - "name": "actorRequestTypes", - "required": false, - "schema": { - "type": "string", - "enum": [ - "API_KEY_ENTITY", - "ATLASSIAN_WEBHOOK", - "SCORECARD_BADGES", - "SLACK_COMMAND" - ] - } - } - ], - "responses": { - "200": { + "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AuditLogsResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully retrieved audit logs" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve audit logs", + "summary": "Add a single configuration", "tags": [ - "Audit Logs" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/auth/key": { - "get": { - "description": "List API keys\n\nThe API key used to make the request must have the `Edit API keys` permission", - "operationId": "listApiKey", - "parameters": [ - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "/api/v1/anthropic/configuration/validate": { + "post": { + "operationId": "AnthropicValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ListApiKeyResponse" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ListApiKeyResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully found API keys" + "description": "Successfully validated all configurations" }, - "400": { + "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Bad request" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List API keys", + "summary": "Validate all configurations", "tags": [ - "API Keys" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/anthropic/configuration/validate/{alias}": { "post": { - "description": "Create new API key.\n\nThe API key used to make the request must have the `Edit API keys` permission", - "operationId": "createApiKey", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateApiRequest" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/CreateApiRequest" - } + "operationId": "AnthropicValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateApiResponse" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/CreateApiResponse" - } - } - }, - "description": "Successfully created API key" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/IntegrationConfigValidation" } } }, - "description": "Bad request" + "description": "Successfully validated configuration" }, - "403": { + "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Access denied" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create API key", + "summary": "Validate a configuration", "tags": [ - "API Keys" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/auth/key/{cid}": { + "/api/v1/anthropic/configuration/{alias}": { "delete": { - "description": "Delete API key\n\nThe API key used to make the request must have the `Edit API keys` permission", - "operationId": "deleteApiKey", + "operationId": "AnthropicRemoveConfiguration", "parameters": [ { - "description": "The unique, auto-generated identifier for the API key", - "example": "ak1234567890abcdef", "in": "path", - "name": "cid", + "name": "alias", "required": true, "schema": { - "type": "string", - "description": "The unique, auto-generated identifier for the API key", - "example": "ak1234567890abcdef" + "type": "string" } } ], "responses": { "200": { - "description": "Successfully deleted API key" - }, - "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAnthropicConfiguration" } - }, - "application/yaml": { + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Bad request" + "description": "Bad Request" }, "403": { "content": { @@ -765,14 +709,9 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Access denied" + "description": "Forbidden" }, "404": { "content": { @@ -780,39 +719,29 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "API key not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete API key", + "summary": "Delete a configuration", "tags": [ - "API Keys" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" }, "get": { - "description": "Get API key", - "operationId": "getApiKey", + "operationId": "AnthropicGetConfiguration", "parameters": [ { - "description": "The unique, auto-generated identifier for the API key", - "example": "ak1234567890abcdef", "in": "path", - "name": "cid", + "name": "alias", "required": true, "schema": { - "type": "string", - "description": "The unique, auto-generated identifier for the API key", - "example": "ak1234567890abcdef" + "type": "string" } } ], @@ -821,16 +750,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyDefinition" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ApiKeyDefinition" + "$ref": "#/components/schemas/AnthropicConfiguration" } } }, - "description": "Successfully found API key" + "description": "Successfully found configuration" }, "400": { "content": { @@ -838,14 +762,9 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Bad request" + "description": "Bad Request" }, "404": { "content": { @@ -853,39 +772,30 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "API key not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get API key", + "summary": "Retrieve a configuration", "tags": [ - "API Keys" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" }, "put": { - "description": "Update API key\n\nThe API key used to make the request must have the `Edit API keys` permission", - "operationId": "updateApiKey", + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "AnthropicUpdateConfiguration", "parameters": [ { - "description": "The unique, auto-generated identifier for the API key", - "example": "ak1234567890abcdef", "in": "path", - "name": "cid", + "name": "alias", "required": true, "schema": { - "type": "string", - "description": "The unique, auto-generated identifier for the API key", - "example": "ak1234567890abcdef" + "type": "string" } } ], @@ -893,12 +803,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateApiRequest" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/UpdateApiRequest" + "$ref": "#/components/schemas/AnthropicUpdateConfigurationRequest" } } }, @@ -909,16 +814,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiKeyDefinition" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ApiKeyDefinition" + "$ref": "#/components/schemas/ConfigurationsResponseAnthropicConfiguration" } } }, - "description": "Successfully updated API key" + "description": "Successfully updated configuration" }, "400": { "content": { @@ -926,14 +826,9 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Bad request" + "description": "Bad Request" }, "403": { "content": { @@ -941,14 +836,9 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Access denied" + "description": "Forbidden" }, "404": { "content": { @@ -956,34 +846,39 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "API key not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update API key", + "summary": "Update a configuration", "tags": [ - "API Keys" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/aws/configurations": { + "/api/v1/anthropic/configurations": { "delete": { - "operationId": "AWSRemoveAllConfigurations", + "operationId": "AnthropicRemoveAllConfigurations", "responses": { "200": { - "description": "Successfully deleted configurations" + "description": "Successfully deleted all configurations" }, - "403": { + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { "content": { "application/json": { "schema": { @@ -999,40 +894,50 @@ }, "summary": "Delete all configurations", "tags": [ - "[Integrations] AWS" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "AWSGetAllConfigurations", + "operationId": "AnthropicListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkAwsConfigurationsResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAnthropicConfiguration" } } }, "description": "Successfully found configurations" }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, "summary": "Retrieve configurations", "tags": [ - "[Integrations] AWS" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "AWSAddSingleConfiguration", + "operationId": "AnthropicSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SingleAwsConfigurationRequest" + "$ref": "#/components/schemas/ConfigurationsRequestAnthropicConfigurationRequest" } } }, @@ -1043,13 +948,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SingleAwsConfigurationResponse" + "$ref": "#/components/schemas/MultipleConfigurationsResponseAnthropicConfiguration" } } }, - "description": "Successfully added configuration" + "description": "Successfully added configurations" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -1057,9 +962,34 @@ } } }, - "description": "Bad Request" + "description": "Forbidden" }, - "403": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Anthropic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/anthropic/default-configuration": { + "get": { + "operationId": "AnthropicGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnthropicConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { "content": { "application/json": { "schema": { @@ -1067,25 +997,27 @@ } } }, - "description": "Forbidden" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "Retrieve default configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Anthropic" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "AWSReplaceAllConfigurations", + } + }, + "/api/v1/apiiro/configuration": { + "post": { + "operationId": "ApiiroSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkAwsConfigurationsRequest" + "$ref": "#/components/schemas/ApiiroConfigurationRequest" } } }, @@ -1096,11 +1028,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkAwsConfigurationsResponse" + "$ref": "#/components/schemas/ConfigurationsResponseApiiroConfiguration" } } }, - "description": "Successfully replaced configurations" + "description": "Successfully added configuration" }, "400": { "content": { @@ -1126,16 +1058,16 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update configurations", + "summary": "Add a single configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/aws/configurations/all/validate": { + "/api/v1/apiiro/configuration/validate": { "post": { - "operationId": "AWSValidateAllConfigurations", + "operationId": "ApiiroValidateAllConfigurations", "responses": { "200": { "content": { @@ -1147,24 +1079,34 @@ }, "description": "Successfully validated all configurations" }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, "summary": "Validate all configurations", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/aws/configurations/validate/{accountId}": { + "/api/v1/apiiro/configuration/validate/{alias}": { "post": { - "operationId": "AWSValidateConfiguration", + "operationId": "ApiiroValidateConfiguration", "parameters": [ { "in": "path", - "name": "accountId", + "name": "alias", "required": true, "schema": { "type": "string" @@ -1198,18 +1140,18 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/aws/configurations/{accountId}": { + "/api/v1/apiiro/configuration/{alias}": { "delete": { - "operationId": "AWSRemoveSingleConfiguration", + "operationId": "ApiiroRemoveConfiguration", "parameters": [ { "in": "path", - "name": "accountId", + "name": "alias", "required": true, "schema": { "type": "string" @@ -1218,8 +1160,25 @@ ], "responses": { "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseApiiroConfiguration" + } + } + }, "description": "Successfully deleted configuration" }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, "403": { "content": { "application/json": { @@ -1246,16 +1205,16 @@ }, "summary": "Delete a configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "AWSGetConfiguration", + "operationId": "ApiiroGetConfiguration", "parameters": [ { "in": "path", - "name": "accountId", + "name": "alias", "required": true, "schema": { "type": "string" @@ -1267,12 +1226,22 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SingleAwsConfigurationResponse" + "$ref": "#/components/schemas/ApiiroConfiguration" } } }, "description": "Successfully found configuration" }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, "404": { "content": { "application/json": { @@ -1289,58 +1258,63 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/aws/types": { - "get": { - "operationId": "AWSGetAwsCloudControlTypes", + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "ApiiroUpdateConfiguration", "parameters": [ { - "description": "When true, includes all AWS types supported", - "in": "query", - "name": "includeDisabled", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", + "in": "path", + "name": "alias", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiiroUpdateConfigurationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AwsCloudControlTypeResponse" + "$ref": "#/components/schemas/ConfigurationsResponseApiiroConfiguration" } } }, - "description": "Successfully found AWS types" + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "404": { "content": { @@ -1350,25 +1324,96 @@ } } }, - "description": "AWS types not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List AWS types", + "summary": "Update a configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/apiiro/configurations": { + "delete": { + "operationId": "ApiiroRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" }, - "put": { - "operationId": "AWSSetConfiguredAwsCloudControlTypes", + "get": { + "operationId": "ApiiroListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseApiiroConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Apiiro" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "ApiiroSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AwsCloudControlTypesConfigurationRequest" + "$ref": "#/components/schemas/ConfigurationsRequestApiiroConfigurationRequest" } } }, @@ -1379,13 +1424,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AwsCloudControlTypesResponse" + "$ref": "#/components/schemas/MultipleConfigurationsResponseApiiroConfiguration" } } }, - "description": "Successfully replaced AWS types" + "description": "Successfully added configurations" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -1393,9 +1438,34 @@ } } }, - "description": "Bad Request" + "description": "Forbidden" }, - "403": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Apiiro" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/apiiro/default-configuration": { + "get": { + "operationId": "ApiiroGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiiroConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { "content": { "application/json": { "schema": { @@ -1403,27 +1473,27 @@ } } }, - "description": "Forbidden" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update configured AWS types", + "summary": "Retrieve default configuration", "tags": [ - "[Integrations] AWS" + "[Integrations] Apiiro" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-devops/configuration": { + "/api/v1/argocd/configuration": { "post": { - "operationId": "AzureDevopsSaveConfiguration", + "operationId": "ArgoCDSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureDevopsConfigurationRequest" + "$ref": "#/components/schemas/ArgoCDConfigurationRequest" } } }, @@ -1434,7 +1504,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseArgoCDConfiguration" } } }, @@ -1466,14 +1536,14 @@ }, "summary": "Add a single configuration", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-devops/configuration/validate": { + "/api/v1/argocd/configuration/validate": { "post": { - "operationId": "AzureDevopsValidateAllConfigurations", + "operationId": "ArgoCDValidateAllConfigurations", "responses": { "200": { "content": { @@ -1501,14 +1571,14 @@ }, "summary": "Validate all configurations", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-devops/configuration/validate/{alias}": { + "/api/v1/argocd/configuration/validate/{alias}": { "post": { - "operationId": "AzureDevopsValidateConfiguration", + "operationId": "ArgoCDValidateConfiguration", "parameters": [ { "in": "path", @@ -1546,14 +1616,14 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-devops/configuration/{alias}": { + "/api/v1/argocd/configuration/{alias}": { "delete": { - "operationId": "AzureDevopsRemoveConfiguration", + "operationId": "ArgoCDRemoveConfiguration", "parameters": [ { "in": "path", @@ -1569,7 +1639,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseArgoCDConfiguration" } } }, @@ -1611,12 +1681,12 @@ }, "summary": "Delete a configuration", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "AzureDevopsGetConfiguration", + "operationId": "ArgoCDGetConfiguration", "parameters": [ { "in": "path", @@ -1632,7 +1702,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureDevopsConfiguration" + "$ref": "#/components/schemas/ArgoCDConfiguration" } } }, @@ -1664,13 +1734,13 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" }, "put": { "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "AzureDevopsUpdateConfiguration", + "operationId": "ArgoCDUpdateConfiguration", "parameters": [ { "in": "path", @@ -1685,7 +1755,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureDevopsUpdateConfigurationRequest" + "$ref": "#/components/schemas/ArgoCDUpdateConfigurationRequest" } } }, @@ -1696,7 +1766,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseArgoCDConfiguration" } } }, @@ -1738,14 +1808,14 @@ }, "summary": "Update a configuration", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-devops/configurations": { + "/api/v1/argocd/configurations": { "delete": { - "operationId": "AzureDevopsRemoveAllConfigurations", + "operationId": "ArgoCDRemoveAllConfigurations", "responses": { "200": { "description": "Successfully deleted all configurations" @@ -1776,18 +1846,18 @@ }, "summary": "Delete all configurations", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "AzureDevopsListConfigurations", + "operationId": "ArgoCDListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseArgoCDConfiguration" } } }, @@ -1809,17 +1879,17 @@ }, "summary": "Retrieve configurations", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "AzureDevopsSaveConfigurations", + "operationId": "ArgoCDSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestAzureDevopsConfigurationRequest" + "$ref": "#/components/schemas/ConfigurationsRequestArgoCDConfigurationRequest" } } }, @@ -1830,7 +1900,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseAzureDevopsConfiguration" + "$ref": "#/components/schemas/MultipleConfigurationsResponseArgoCDConfiguration" } } }, @@ -1852,20 +1922,20 @@ }, "summary": "Add multiple configurations", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-devops/default-configuration": { + "/api/v1/argocd/default-configuration": { "get": { - "operationId": "AzureDevopsGetDefaultConfiguration", + "operationId": "ArgoCDGetDefaultConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureDevopsConfiguration" + "$ref": "#/components/schemas/ArgoCDConfiguration" } } }, @@ -1887,169 +1957,458 @@ }, "summary": "Retrieve default configuration", "tags": [ - "[Integrations] Azure Devops" + "[Integrations] ArgoCD" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-resources/configuration": { - "post": { - "operationId": "AzureResourcesSaveConfiguration", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AzureResourcesConfigurationRequest" + "/api/v1/audit-logs": { + "get": { + "description": "Note: To see the complete list of possible values, please reference the available filter options for [audit logs under Settings in the app](https://app.getcortexapp.com/admin/settings/audit-logs). API key must have the `View audit logs` permission.", + "operationId": "getAuditLogs", + "parameters": [ + { + "in": "query", + "name": "startTime", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "in": "query", + "name": "endTime", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "in": "query", + "name": "actions", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CREATE", + "READ", + "UPDATE", + "DELETE" + ] } } }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" - } + { + "in": "query", + "name": "objectIdentifiers", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" } - }, - "description": "Successfully added configuration" + } }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } + { + "description": "Filter by Cortex object types (CATALOG, SERVICE, TEAM, SCORECARD, etc), integration configurations (AWS_CONFIGURATION, BITBUCKET_CONFIGURATION, etc), and more.", + "in": "query", + "name": "objectTypes", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ACCOUNT_FLAG", + "ACTIVE_DIRECTORY_CONFIGURATION", + "ALLOW_LIST_ENTRY", + "API_KEY", + "APIIRO_CONFIGURATION", + "ARGOCD_CONFIGURATION", + "ATLASSIAN_CONFIGURATION", + "AWS_CLOUD_CONTROL_TYPE_CONFIGURATION", + "AWS_CONFIGURATION", + "AZURE_DEVOPS_CONFIGURATION", + "AZURE_RESOURCES_CONFIGURATION", + "BAMBOO_HR_CONFIGURATION", + "BITBUCKET_CONFIGURATION", + "BITBUCKET_OAUTH_CONFIGURATION", + "BITBUCKET_OAUTH_REGISTRATION", + "BITBUCKET_ONPREM_CONFIGURATION", + "BITBUCKET_ONPREM_WEBHOOK_SECRET", + "BITBUCKET_PERSONAL_CONFIGURATION", + "BITBUCKET_WORKSPACE_ACCESS_TOKEN_CONFIGURATION", + "BUGSNAG_CONFIGURATION", + "BUILDKITE_CONFIGURATION", + "CATALOG", + "CATALOG_FILTER", + "CHECKMARX_SAST_CONFIGURATION", + "CIRCLE_CI_CONFIGURATION", + "CLICKUP_CONFIGURATION", + "CODECOV_CONFIGURATION", + "CORALOGIX_CONFIGURATION", + "CORTEX_TEAM_ROLES", + "CORTEX_USER", + "CORTEX_USER_ROLES", + "CUSTOM_DATA", + "CUSTOM_EVENT", + "CUSTOM_METRICS_CONFIGURATION", + "CUSTOM_METRICS_DATA", + "CUSTOM_ROLE", + "CUSTOM_ROLE_PERMISSIONS", + "DATADOG_CONFIGURATION", + "DEPENDENCY", + "DOMAIN", + "DYNATRACE_CONFIGURATION", + "ENGINTEL_SAVED_MODULE", + "ENTITY_SIDEBAR_CONFIGURATION", + "ENTITY_TYPE_DEFINITION", + "ENTITY_VERIFICATION", + "FIREHYDRANT_CONFIGURATION", + "GITHUB_APP_CONFIGURATION", + "GITHUB_APP_INSTALLATION", + "GITHUB_PERSONAL_TOKEN", + "GITHUB_WEBHOOK_SECRET", + "GITLAB_CONFIGURATION", + "GOOGLE_CONFIGURATION", + "IDENTITY_MAPPING", + "INCIDENT_IO_CONFIGURATION", + "INITIATIVE", + "INSTANA_CONFIGURATION", + "INTEGRATION_INSTANCE", + "JENKINS_CONFIGURATION", + "JIRA_BASIC_CONFIGURATION", + "JIRA_CLOUD_SCOPED_CONFIGURATION", + "JIRA_CONFIGURATION", + "JIRA_OAUTH_CONFIGURATION", + "JIRA_OAUTH_REGISTRATION", + "JIRA_ONPREM_CONFIGURATION", + "LAUNCHDARKLY_CONFIGURATION", + "LIGHTSTEP_CONFIGURATION", + "MEND_SAST_CONFIGURATION", + "MEND_SCA_CONFIGURATION", + "MICROSOFT_TEAMS_CONFIGURATION", + "NEWRELIC_CONFIGURATION", + "OAUTH_CONFIGURATION", + "OKTA_CONFIGURATION", + "OPENAPI_DEFINITION", + "OPSGENIE_CONFIGURATION", + "PAGERDUTY_CONFIGURATION", + "PERSONAL_API_KEY", + "PLUGIN", + "PROMETHEUS_CONFIGURATION", + "RELATIONSHIP_TYPE", + "RELAY_CONFIGURATION", + "RESOURCE", + "ROLLBAR_CONFIGURATION", + "SCORECARD", + "SCORECARD_FILTER", + "SCORECARD_RULE", + "SCORECARD_RULE_FILTER", + "SECRET", + "SECRET_GROUP", + "SEMGREP_CONFIGURATION", + "SENTRY_CONFIGURATION", + "SERVICE", + "SERVICENOW_CONFIGURATION", + "SIGNALFX_CONFIGURATION", + "SLACK_CONFIGURATION", + "SNYK_CONFIGURATION", + "SONARQUBE_CONFIGURATION", + "SUMOLOGIC_CONFIGURATION", + "TEAM", + "USER_LABEL_KEY", + "VERACODE_CONFIGURATION", + "VERIFICATION_PERIOD", + "VICTOROPS_CONFIGURATION", + "WEBHOOK_CONFIGURATION", + "WIZ_CONFIGURATION", + "WORKDAY_CONFIGURATION", + "WORKFLOW", + "XMATTERS_CONFIGURATION" + ] + } + }, + { + "in": "query", + "name": "actorTypes", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "API_KEY", + "PERSONAL_API_KEY", + "OAUTH2", + "BACKSTAGE", + "ANONYMOUS", + "WORKFLOW_ACTION", + "USER", + "SYSTEM" + ] } - }, - "description": "Bad Request" + } }, - "403": { + { + "in": "query", + "name": "actorApiKeyIdentifiers", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "actorEmails", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "actorIpAddresses", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "actorRequestTypes", + "required": false, + "schema": { + "type": "string", + "enum": [ + "API_KEY_ENTITY", + "ATLASSIAN_WEBHOOK", + "SCORECARD_BADGES", + "SLACK_COMMAND" + ] + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/AuditLogsResponse" } } }, - "description": "Forbidden" + "description": "Successfully retrieved audit logs" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "Retrieve audit logs", "tags": [ - "[Integrations] Azure Resources" + "Audit Logs" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-resources/configuration/validate": { - "post": { - "operationId": "AzureResourcesValidateAllConfigurations", + "/api/v1/auth/key": { + "get": { + "description": "List API keys\n\nThe API key used to make the request must have the `Edit API keys` permission", + "operationId": "listApiKey", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + "$ref": "#/components/schemas/ListApiKeyResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ListApiKeyResponse" } } }, - "description": "Successfully validated all configurations" + "description": "Successfully found API keys" }, - "404": { + "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Configuration not found" + "description": "Bad request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "List API keys", "tags": [ - "[Integrations] Azure Resources" + "API Keys" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/azure-resources/configuration/validate/{alias}": { + }, "post": { - "operationId": "AzureResourcesValidateConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" + "description": "Create new API key.\n\nThe API key used to make the request must have the `Edit API keys` permission", + "operationId": "createApiKey", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateApiRequest" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/CreateApiRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/CreateApiResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/CreateApiResponse" } } }, - "description": "Successfully validated configuration" + "description": "Successfully created API key" }, - "404": { + "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Configuration not found" + "description": "Bad request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Access denied" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate a configuration", + "summary": "Create API key", "tags": [ - "[Integrations] Azure Resources" + "API Keys" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-resources/configuration/{alias}": { + "/api/v1/auth/key/{cid}": { "delete": { - "operationId": "AzureResourcesRemoveConfiguration", + "description": "Delete API key\n\nThe API key used to make the request must have the `Edit API keys` permission", + "operationId": "deleteApiKey", "parameters": [ { + "description": "The unique, auto-generated identifier for the API key", + "example": "ak1234567890abcdef", "in": "path", - "name": "alias", + "name": "cid", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "The unique, auto-generated identifier for the API key", + "example": "ak1234567890abcdef" } } ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" - } - } - }, - "description": "Successfully deleted configuration" + "description": "Successfully deleted API key" }, "400": { "content": { @@ -2057,9 +2416,14 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Bad Request" + "description": "Bad request" }, "403": { "content": { @@ -2067,9 +2431,14 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Forbidden" + "description": "Access denied" }, "404": { "content": { @@ -2077,29 +2446,39 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Configuration not found" + "description": "API key not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a configuration", + "summary": "Delete API key", "tags": [ - "[Integrations] Azure Resources" + "API Keys" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "AzureResourcesGetConfiguration", + "description": "Get API key", + "operationId": "getApiKey", "parameters": [ { + "description": "The unique, auto-generated identifier for the API key", + "example": "ak1234567890abcdef", "in": "path", - "name": "alias", + "name": "cid", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "The unique, auto-generated identifier for the API key", + "example": "ak1234567890abcdef" } } ], @@ -2108,11 +2487,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureResourcesConfiguration" + "$ref": "#/components/schemas/ApiKeyDefinition" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ApiKeyDefinition" } } }, - "description": "Successfully found configuration" + "description": "Successfully found API key" }, "400": { "content": { @@ -2120,9 +2504,14 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Bad Request" + "description": "Bad request" }, "404": { "content": { @@ -2130,30 +2519,39 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Configuration not found" + "description": "API key not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a configuration", + "summary": "Get API key", "tags": [ - "[Integrations] Azure Resources" + "API Keys" ], "x-cortex-mcp-enabled": "false" }, "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "AzureResourcesUpdateConfiguration", + "description": "Update API key\n\nThe API key used to make the request must have the `Edit API keys` permission", + "operationId": "updateApiKey", "parameters": [ { + "description": "The unique, auto-generated identifier for the API key", + "example": "ak1234567890abcdef", "in": "path", - "name": "alias", + "name": "cid", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "The unique, auto-generated identifier for the API key", + "example": "ak1234567890abcdef" } } ], @@ -2161,7 +2559,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureResourcesUpdateConfigurationRequest" + "$ref": "#/components/schemas/UpdateApiRequest" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/UpdateApiRequest" } } }, @@ -2172,11 +2575,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" + "$ref": "#/components/schemas/ApiKeyDefinition" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ApiKeyDefinition" } } }, - "description": "Successfully updated configuration" + "description": "Successfully updated API key" }, "400": { "content": { @@ -2184,9 +2592,14 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Bad Request" + "description": "Bad request" }, "403": { "content": { @@ -2194,9 +2607,14 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Forbidden" + "description": "Access denied" }, "404": { "content": { @@ -2204,37 +2622,32 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Configuration not found" + "description": "API key not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "Update API key", "tags": [ - "[Integrations] Azure Resources" + "API Keys" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/azure-resources/configurations": { + "/api/v1/aws/configurations": { "delete": { - "operationId": "AzureResourcesRemoveAllConfigurations", + "operationId": "AWSRemoveAllConfigurations", "responses": { "200": { - "description": "Successfully deleted all configurations" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" + "description": "Successfully deleted configurations" }, "403": { "content": { @@ -2252,50 +2665,40 @@ }, "summary": "Delete all configurations", "tags": [ - "[Integrations] Azure Resources" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "AzureResourcesListConfigurations", + "operationId": "AWSGetAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" + "$ref": "#/components/schemas/BulkAwsConfigurationsResponse" } } }, "description": "Successfully found configurations" }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, "summary": "Retrieve configurations", "tags": [ - "[Integrations] Azure Resources" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "AzureResourcesSaveConfigurations", + "operationId": "AWSAddSingleConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestAzureResourcesConfigurationRequest" + "$ref": "#/components/schemas/SingleAwsConfigurationRequest" } } }, @@ -2306,13 +2709,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseAzureResourcesConfiguration" + "$ref": "#/components/schemas/SingleAwsConfigurationResponse" } } }, - "description": "Successfully added configurations" + "description": "Successfully added configuration" }, - "403": { + "400": { "content": { "application/json": { "schema": { @@ -2320,34 +2723,9 @@ } } }, - "description": "Forbidden" + "description": "Bad Request" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Add multiple configurations", - "tags": [ - "[Integrations] Azure Resources" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/azure-resources/default-configuration": { - "get": { - "operationId": "AzureResourcesGetDefaultConfiguration", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AzureResourcesConfiguration" - } - } - }, - "description": "Successfully found default configuration" - }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -2355,68 +2733,42 @@ } } }, - "description": "Bad Request" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "Add a single configuration", "tags": [ - "[Integrations] Azure Resources" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/azure-resources/types": { - "get": { - "operationId": "AzureResourcesListAzureResourceTypes", - "parameters": [ - { - "description": "Whether to include disabled Azure Resources types", - "in": "query", - "name": "includeDisabled", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 + }, + "put": { + "operationId": "AWSReplaceAllConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkAwsConfigurationsRequest" + } } }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureResourceTypesResponse" + "$ref": "#/components/schemas/BulkAwsConfigurationsResponse" } } }, - "description": "Successfully found Azure Resources types" + "description": "Successfully replaced configurations" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -2424,50 +2776,77 @@ } } }, - "description": "Azure Resources types not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List Azure Resources types", + "summary": "Update configurations", "tags": [ - "[Integrations] Azure Resources" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "AzureResourcesReplaceAzureResourceTypes", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateConfiguredAzureResourcesTypesRequest" - } - } - }, - "required": true - }, + } + }, + "/api/v1/aws/configurations/all/validate": { + "post": { + "operationId": "AWSValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AzureResourceTypesResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully replaced Azure Resources types" + "description": "Successfully validated all configurations" }, - "400": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] AWS" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/aws/configurations/validate/{accountId}": { + "post": { + "operationId": "AWSValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "accountId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/IntegrationConfigValidation" } } }, - "description": "Bad Request" + "description": "Successfully validated configuration" }, "404": { "content": { @@ -2477,53 +2856,37 @@ } } }, - "description": "Azure Resources types not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update configured Azure Resources types", + "summary": "Validate a configuration", "tags": [ - "[Integrations] Azure Resources" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog": { + "/api/v1/aws/configurations/{accountId}": { "delete": { - "description": "Note: Dangerous operation that will delete all entities that are of the given type", - "operationId": "deleteEntitiesByType", + "operationId": "AWSRemoveSingleConfiguration", "parameters": [ { - "description": "A list of entity types or IDs delete", - "in": "query", - "name": "types", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "in": "query", - "name": "ids", - "required": false, + "in": "path", + "name": "accountId", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], "responses": { "200": { - "description": "Successfully deleted entities" + "description": "Successfully deleted configuration" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -2531,195 +2894,37 @@ } } }, - "description": "Invalid filters" + "description": "Forbidden" }, - "405": { - "description": "Entity delete is not allowed" + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete entities by type", + "summary": "Delete a configuration", "tags": [ - "Catalog Entities" + "[Integrations] AWS" ], - "x-cortex-mcp-description": "Delete all entities of specific types. If the client is trying to fetch data for teams, use \u0027type\u0027: \u0027team\u0027 in these APIs. Disabled for MCP access due to the destructive nature of bulk operations that could remove critical infrastructure components.", "x-cortex-mcp-enabled": "false" }, "get": { - "description": "List all entities across the Service, Resource and Domain Catalogs.\n\nThis API returns summary data for each entity, so refer to the retrieve entity method to lookup more details for a single entity.", - "operationId": "listAllEntities", + "operationId": "AWSGetConfiguration", "parameters": [ { - "description": "Filter based on groups, which correspond to the `x-cortex-groups` field in the Catalog Descriptor. Accepts a comma-delimited list of groups", - "in": "query", - "name": "groups", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - { - "description": "Filter based on owner group names, which correspond to the `x-cortex-owners` field in the Catalog Descriptor. Accepts a comma-delimited list of owner group names", - "in": "query", - "name": "owners", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - { - "description": "Depth of the parent / children hierarchy nodes. Can be \u0027full\u0027 or a valid integer", - "in": "query", - "name": "hierarchyDepth", - "required": false, - "schema": { - "type": "string", - "default": "full" - } - }, - { - "description": "Supports only GitHub repositories in the `org/repo` format", - "example": "cortexapps%2Fbackend,cortexapps%2Ffrontend", - "in": "query", - "name": "gitRepositories", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - { - "description": "List of sub fields to include for hierarchies. Only supports \u0027groups\u0027", - "example": "groups", - "in": "query", - "name": "includeHierarchyFields", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "description": "Filter the response to specific types of entities. By default, this includes services, resources, and domains. Corresponds to the `x-cortex-type` field in the entity descriptor.", - "example": "service,rds,s3,domain", - "in": "query", - "name": "types", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - } - }, - { - "description": "Filter based on a [search query](https://docs.cortex.io/settings/search). This will search across entity properties. If provided, results will be sorted by relevance.", - "in": "query", - "name": "query", - "required": false, - "schema": { - "type": "string", - "default": "" - } - }, - { - "description": "Whether to include archived entities in the response", - "in": "query", - "name": "includeArchived", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Whether to include custom data for each entity in the response", - "in": "query", - "name": "includeMetadata", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Whether to include links for each entity in the response", - "in": "query", - "name": "includeLinks", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Whether to include Slack channels for each entity in the response", - "in": "query", - "name": "includeSlackChannels", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Whether to include ownership information for each entity in the response", - "in": "query", - "name": "includeOwners", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "List of sub fields to include for different types", - "example": "team:members", - "in": "query", - "name": "includeNestedFields", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", + "in": "path", + "name": "accountId", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } } ], @@ -2728,13 +2933,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ListCatalogEntities" + "$ref": "#/components/schemas/SingleAwsConfigurationResponse" } } }, - "description": "Successfully found entities" + "description": "Successfully found configuration" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -2742,64 +2947,27 @@ } } }, - "description": "Invalid filters" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List entities", + "summary": "Retrieve a configuration", "tags": [ - "Catalog Entities" + "[Integrations] AWS" ], - "x-cortex-mcp-description": "List and filter catalog entities with support for pagination, search, and various filters including groups, types, owners, and git repositories. If the client is trying to fetch data for teams, use \u0027type\u0027: \u0027team\u0027 in these APIs.", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/batch/{type}": { + "/api/v1/aws/types": { "get": { - "description": "Gets a list of entities based on type and batch key plus identifier", - "operationId": "getEntitiesByBatchIdentifier", + "operationId": "AWSGetAwsCloudControlTypes", "parameters": [ { - "description": "The type name of the batches to retrieve. This corresponds to the `x-cortex-type` field in the entity descriptor.", - "in": "path", - "name": "type", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The batch key to filter entities by. This is a custom field set as entity metadata `__cortex_batch.key`", - "in": "query", - "name": "key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The batch version. This is a custom field set as entity metadata `__cortex_batch.identifier`, required if `compare` is specified", - "in": "query", - "name": "version", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "The type over comparison to perform. Ignored unless `version` parameter must also be provided. Values can be `eq`, `ne`.", - "in": "query", - "name": "compare", - "required": false, - "schema": { - "type": "string" - } - }, - { + "description": "When true, includes all AWS types supported", "in": "query", - "name": "includeArchived", + "name": "includeDisabled", "required": false, "schema": { "type": "boolean", @@ -2834,58 +3002,56 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityCIDListResponse" + "$ref": "#/components/schemas/AwsCloudControlTypeResponse" } } }, - "description": "List of entity identifiers matching the batch key and type, based on the specified compare parameter." + "description": "Successfully found AWS types" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "AWS types not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get entities by batch identifier", + "summary": "List AWS types", "tags": [ - "Catalog Entities" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/custom-data": { - "delete": { - "description": "Use this endpoint when attempting to delete custom data where the key contains non-alphanumeric characters. Otherwise, use the standard API under `Custom Data`.", - "operationId": "getCustomDataForEntityByKeyAdvanced", - "parameters": [ - { - "in": "query", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "key", - "required": true, - "schema": { - "type": "string" + }, + "put": { + "operationId": "AWSSetConfiguredAwsCloudControlTypes", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AwsCloudControlTypesConfigurationRequest" + } } }, - { - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } - } - ], + "required": true + }, "responses": { "200": { - "description": "Successfully deleted custom data" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AwsCloudControlTypesResponse" + } + } + }, + "description": "Successfully replaced AWS types" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -2893,56 +3059,54 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete custom data by key for entity", + "summary": "Update configured AWS types", "tags": [ - "Custom Data [Advanced]" + "[Integrations] AWS" ], "x-cortex-mcp-enabled": "false" - }, - "get": { - "description": "Use this endpoint when attempting to delete custom data where the key contains non-alphanumeric characters. Otherwise, use the standard API under `Custom Data`.", - "operationId": "retrieveCustomDataForEntityAdvanced", - "parameters": [ - { - "description": "Entity tag (x-cortex-tag), supports non-alphanumeric characters", - "in": "query", - "name": "tag", - "required": true, - "schema": { - "type": "string" + } + }, + "/api/v1/azure-devops/configuration": { + "post": { + "operationId": "AzureDevopsSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AzureDevopsConfigurationRequest" + } } }, - { - "description": "When set, returns the entity\u0027s value at this key. Otherwise, returns all custom data key/values for the entity.", - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomData" - } + "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" } } }, - "description": "Successfully retrieved custom data" + "description": "Successfully added configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -2950,65 +3114,42 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve custom data for entity", + "summary": "Add a single configuration", "tags": [ - "Custom Data [Advanced]" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/azure-devops/configuration/validate": { "post": { - "operationId": "addCustomDataForEntityAdvanced", - "parameters": [ - { - "in": "query", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "requestBody": { - "content": { - "application/json": {} - }, - "required": true - }, + "operationId": "AzureDevopsValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomData" - } - } - }, - "description": "Successfully created data" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Invalid custom data request" + "description": "Successfully validated all configurations" }, "404": { "content": { @@ -3018,50 +3159,44 @@ } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add custom data for entity", + "summary": "Validate all configurations", "tags": [ - "Custom Data [Advanced]" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "Add multiple key/values of custom data to multiple entities", - "operationId": "createOrUpdateCustomDataInBulk", + } + }, + "/api/v1/azure-devops/configuration/validate/{alias}": { + "post": { + "operationId": "AzureDevopsValidateConfiguration", "parameters": [ { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, + "in": "path", + "name": "alias", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": {} - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkCustomDataResponse" + "$ref": "#/components/schemas/IntegrationConfigValidation" } } }, - "description": "Successfully created/updated custom data" + "description": "Successfully validated configuration" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -3069,53 +3204,29 @@ } } }, - "description": "Invalid custom data request" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add custom data in bulk", + "summary": "Validate a configuration", "tags": [ - "Custom Data" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/definitions": { - "get": { - "description": "List entity types\n\nResponse excludes Cortex default types of service, domain, and team.", - "operationId": "listDefinitions", + "/api/v1/azure-devops/configuration/{alias}": { + "delete": { + "operationId": "AzureDevopsRemoveConfiguration", "parameters": [ { - "description": "When true, returns the built-in entity types that Cortex provides, such as `rds` and `s3`. Defaults to false.", - "in": "query", - "name": "includeBuiltIn", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", + "in": "path", + "name": "alias", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } } ], @@ -3124,46 +3235,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogDefinitionsListResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" } } }, - "description": "Successfully found entity types" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "List entity types", - "tags": [ - "Entity Types" - ], - "x-cortex-mcp-enabled": "false" - }, - "post": { - "operationId": "createDefinition", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateCatalogDefinitionRequest" - } - } + "description": "Successfully deleted configuration" }, - "required": true - }, - "responses": { - "200": { + "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogDefinitionResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully created entity type" + "description": "Bad Request" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -3171,35 +3259,7 @@ } } }, - "description": "Failed to create entity type" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Create entity type", - "tags": [ - "Entity Types" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/definitions/{type}": { - "delete": { - "operationId": "deleteDefinition", - "parameters": [ - { - "in": "path", - "name": "type", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successfully deleted entity type" + "description": "Forbidden" }, "404": { "content": { @@ -3209,24 +3269,24 @@ } } }, - "description": "Entity type not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete entity type", + "summary": "Delete a configuration", "tags": [ - "Entity Types" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "getDefinition", + "operationId": "AzureDevopsGetConfiguration", "parameters": [ { "in": "path", - "name": "type", + "name": "alias", "required": true, "schema": { "type": "string" @@ -3238,11 +3298,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogDefinitionResponse" + "$ref": "#/components/schemas/AzureDevopsConfiguration" } } }, - "description": "Successfully found entity types" + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -3252,44 +3322,36 @@ } } }, - "description": "Entity type not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve entity type", + "summary": "Retrieve a configuration", "tags": [ - "Entity Types" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" }, "put": { - "operationId": "updateDefinition", + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "AzureDevopsUpdateConfiguration", "parameters": [ { "in": "path", - "name": "type", + "name": "alias", "required": true, "schema": { "type": "string" } - }, - { - "description": "When true, schema will be updated even if it results in broken schemas for existing entities. Defaults to false.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateCatalogDefinitionRequest" + "$ref": "#/components/schemas/AzureDevopsUpdateConfigurationRequest" } } }, @@ -3300,11 +3362,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CatalogDefinitionResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" } } }, - "description": "Successfully updated entity type" + "description": "Successfully updated configuration" }, "400": { "content": { @@ -3314,7 +3376,17 @@ } } }, - "description": "Failed to update entity type" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "404": { "content": { @@ -3324,35 +3396,25 @@ } } }, - "description": "Entity type not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update entity type", + "summary": "Update a configuration", "tags": [ - "Entity Types" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/dependencies": { + "/api/v1/azure-devops/configurations": { "delete": { - "operationId": "deleteDependenciesInBulk", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkDependencyRequest" - } - } - }, - "required": true - }, + "operationId": "AzureDevopsRemoveAllConfigurations", "responses": { - "204": { - "description": "Successfully deleted dependencies" + "200": { + "description": "Successfully deleted all configurations" }, "400": { "content": { @@ -3362,9 +3424,9 @@ } } }, - "description": "Cannot modify dependency that is defined in cortex.yaml" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -3372,26 +3434,58 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete dependencies in bulk", + "summary": "Delete all configurations", "tags": [ - "Dependencies" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" }, - "put": { - "description": "This API allows you to create multiple dependencies for multiple entities at once.", - "operationId": "createOrUpdateDependenciesInBulk", + "get": { + "operationId": "AzureDevopsListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseAzureDevopsConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Azure Devops" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "AzureDevopsSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkDependencyRequest" + "$ref": "#/components/schemas/ConfigurationsRequestAzureDevopsConfigurationRequest" } } }, @@ -3402,13 +3496,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkDependencyResponse" + "$ref": "#/components/schemas/MultipleConfigurationsResponseAzureDevopsConfiguration" } } }, - "description": "Successfully created / updated dependencies" + "description": "Successfully added configurations" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -3416,9 +3510,34 @@ } } }, - "description": "Cannot modify dependency that is defined in cortex.yaml" + "description": "Forbidden" }, - "404": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Azure Devops" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/azure-devops/default-configuration": { + "get": { + "operationId": "AzureDevopsGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AzureDevopsConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { "content": { "application/json": { "schema": { @@ -3426,65 +3545,42 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create or update dependencies in bulk", + "summary": "Retrieve default configuration", "tags": [ - "Dependencies" + "[Integrations] Azure Devops" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/deploys": { - "delete": { - "description": "Filter and delete deploys by SHA hash, environment, or type. Note that at least one of the filters need to be set.\nIf looking to delete all deployments for an entity, use the `Delete all deploys for entity` endpoint instead.", - "operationId": "deleteDeploysByFilter", - "parameters": [ - { - "in": "query", - "name": "environment", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "sha", - "required": false, - "schema": { - "type": "string" + "/api/v1/azure-resources/configuration": { + "post": { + "operationId": "AzureResourcesSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AzureResourcesConfigurationRequest" + } } }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "DEPLOY", - "SCALE", - "ROLLBACK", - "RESTART" - ] - } - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeploysResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" } } }, - "description": "Successfully deleted deployment" + "description": "Successfully added configuration" }, "400": { "content": { @@ -3494,35 +3590,44 @@ } } }, - "description": "Trying to delete deploys without any filters" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete deploys by filter", + "summary": "Add a single configuration", "tags": [ - "Deploys" + "[Integrations] Azure Resources" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/deploys/all": { - "delete": { - "description": "Dangerous endpoint that blows away deploys for all entities", - "operationId": "deleteAllDeploys", + "/api/v1/azure-resources/configuration/validate": { + "post": { + "operationId": "AzureResourcesValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeploysResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully deleted all deployments" + "description": "Successfully validated all configurations" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -3530,63 +3635,29 @@ } } }, - "description": "Bad Request" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete all deployments for all entities", + "summary": "Validate all configurations", "tags": [ - "Deploys" + "[Integrations] Azure Resources" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/descriptors": { - "get": { - "description": "List entity descriptors\n\nThe descriptors do not include objects (e.g. custom data, dependencies, etc) defined via the API", - "operationId": "listEntityDescriptors", + "/api/v1/azure-resources/configuration/validate/{alias}": { + "post": { + "operationId": "AzureResourcesValidateConfiguration", "parameters": [ { - "description": "When true, returns the YAML representation of the descriptors", - "in": "query", - "name": "yaml", - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter the response to specific types of entities. By default, this includes services, resources, and domains. Corresponds to the `x-cortex-type` field in the entity descriptor.", - "example": "service,rds,s3,domain", - "in": "query", - "name": "types", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "description": "Number of entities to return per page", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "description": "Page number to return, 0 indexed", - "in": "query", - "name": "page", + "in": "path", + "name": "alias", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } } ], @@ -3595,39 +3666,40 @@ "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/YamlDescriptorsListResponse" - }, - { - "$ref": "#/components/schemas/JsonDescriptorsListResponse" - } - ] + "$ref": "#/components/schemas/IntegrationConfigValidation" } } }, - "description": "Successfully retrieved entity descriptors" + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List entity descriptors", + "summary": "Validate a configuration", "tags": [ - "Catalog Entities" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "Cortex Catalog API - Access and manage your service catalog, teams, domains, and resources", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{callerTag}/dependencies": { + "/api/v1/azure-resources/configuration/{alias}": { "delete": { - "description": "Deletes any outgoing dependencies from the entity. Note: this only deletes dependencies that were created via the API.", - "operationId": "deleteDependenciesFromEntity", + "operationId": "AzureResourcesRemoveConfiguration", "parameters": [ { "in": "path", - "name": "callerTag", + "name": "alias", "required": true, "schema": { "type": "string" @@ -3635,15 +3707,35 @@ } ], "responses": { - "204": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" } } }, - "description": "Successfully deleted dependencies" + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "404": { "content": { @@ -3653,69 +3745,28 @@ } } }, - "description": "Caller not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete dependencies from entity", + "summary": "Delete a configuration", "tags": [ - "Dependencies" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "Delete all dependencies for an entity. Disabled for MCP access to protect dependency graph integrity and prevent accidental removal of critical relationship data", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "listDependenciesForEntity", + "operationId": "AzureResourcesGetConfiguration", "parameters": [ { "in": "path", - "name": "callerTag", + "name": "alias", "required": true, "schema": { "type": "string" } - }, - { - "in": "query", - "name": "includeOutgoing", - "required": false, - "schema": { - "type": "boolean", - "default": true - } - }, - { - "in": "query", - "name": "includeIncoming", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } } ], "responses": { @@ -3723,11 +3774,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyResponse" + "$ref": "#/components/schemas/AzureResourcesConfiguration" } } }, - "description": "Successfully found entity dependencies" + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -3737,68 +3798,51 @@ } } }, - "description": "Entity dependencies not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve all dependencies for an entity", + "summary": "Retrieve a configuration", "tags": [ - "Dependencies" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "List all dependencies for an entity including both incoming (who depends on this service) and outgoing (what this service depends on) relationships. Essential for understanding service interactions, planning changes, and assessing blast radius", - "x-cortex-mcp-enabled": "true" - } - }, - "/api/v1/catalog/{callerTag}/dependencies/{calleeTag}": { - "delete": { - "description": "Deletes a single dependency edge between the `caller` and the `callee`. \nNote: This is only supported for edges created via the API.", - "operationId": "deleteDependency", + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "AzureResourcesUpdateConfiguration", "parameters": [ { "in": "path", - "name": "callerTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "calleeTag", + "name": "alias", "required": true, "schema": { "type": "string" } - }, - { - "in": "query", - "name": "method", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "path", - "required": false, - "schema": { - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AzureResourcesUpdateConfigurationRequest" + } + } + }, + "required": true + }, "responses": { - "204": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyResponse" + "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" } } }, - "description": "Successfully deleted dependency" + "description": "Successfully updated configuration" }, "400": { "content": { @@ -3808,7 +3852,17 @@ } } }, - "description": "Invalid endpoint" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "404": { "content": { @@ -3818,68 +3872,37 @@ } } }, - "description": "Dependency not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete dependency", + "summary": "Update a configuration", "tags": [ - "Dependencies" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "Delete a specific dependency between two entities. Disabled for MCP access as removing dependencies can mask critical system relationships", "x-cortex-mcp-enabled": "false" - }, - "get": { - "description": "If a dependency exists between the `callee` and the `caller`, returns metadata about the edge.", - "operationId": "getDependency", - "parameters": [ - { - "in": "path", - "name": "callerTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "calleeTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "method", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "path", - "required": false, - "schema": { - "type": "string" - } - } - ], + } + }, + "/api/v1/azure-resources/configurations": { + "delete": { + "operationId": "AzureResourcesRemoveAllConfigurations", "responses": { "200": { + "description": "Successfully deleted all configurations" + }, + "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully found dependency" + "description": "Bad Request" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -3887,9 +3910,32 @@ } } }, - "description": "Invalid endpoint" + "description": "Forbidden" }, - "404": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Azure Resources" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "AzureResourcesListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseAzureResourcesConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { "content": { "application/json": { "schema": { @@ -3897,81 +3943,42 @@ } } }, - "description": "Dependency not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve dependency between entities", + "summary": "Retrieve configurations", "tags": [ - "Dependencies" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "Get specific dependency details between two entities including method, path, and metadata. Useful for understanding the nature of the relationship, API contracts, and communication patterns between services", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "createDependency", - "parameters": [ - { - "description": "The entity tag (x-cortex-tag) for the callee entity (\"from\" entity)", - "in": "path", - "name": "callerTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The entity tag (x-cortex-tag) for the caller entity (\"to\" entity)", - "in": "path", - "name": "calleeTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "HTTP Method", - "example": "POST", - "in": "query", - "name": "method", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "path", - "required": false, - "schema": { - "type": "string" - } - } - ], + "operationId": "AzureResourcesSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyCreateRequest" + "$ref": "#/components/schemas/ConfigurationsRequestAzureResourcesConfigurationRequest" } } }, "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyResponse" + "$ref": "#/components/schemas/MultipleConfigurationsResponseAzureResourcesConfiguration" } } }, - "description": "Successfully created dependency" + "description": "Successfully added configurations" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -3979,9 +3986,34 @@ } } }, - "description": "Invalid endpoint" + "description": "Forbidden" }, - "404": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Azure Resources" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/azure-resources/default-configuration": { + "get": { + "operationId": "AzureResourcesGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AzureResourcesConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { "content": { "application/json": { "schema": { @@ -3989,61 +4021,94 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create dependency from entity", + "summary": "Retrieve default configuration", "tags": [ - "Dependencies" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "Create a dependency between entities. Disabled for MCP access to prevent unauthorized architecture modifications that could impact system understanding", "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "If a dependency exists between two entities, replace the metadata with the payload. \nNote: This only supports dependencies created via the API.", - "operationId": "updateDependency", + } + }, + "/api/v1/azure-resources/types": { + "get": { + "operationId": "AzureResourcesListAzureResourceTypes", "parameters": [ { - "in": "path", - "name": "callerTag", - "required": true, + "description": "Whether to include disabled Azure Resources types", + "in": "query", + "name": "includeDisabled", + "required": false, "schema": { - "type": "string" + "type": "boolean", + "default": false } }, { - "in": "path", - "name": "calleeTag", + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 250 } }, { + "description": "Page number to return, 0-indexed. Default 0.", "in": "query", - "name": "method", - "required": false, + "name": "page", + "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AzureResourceTypesResponse" + } + } + }, + "description": "Successfully found Azure Resources types" }, - { - "in": "query", - "name": "path", - "required": false, - "schema": { - "type": "string" - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Azure Resources types not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "List Azure Resources types", + "tags": [ + "[Integrations] Azure Resources" ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "AzureResourcesReplaceAzureResourceTypes", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyUpdateRequest" + "$ref": "#/components/schemas/UpdateConfiguredAzureResourcesTypesRequest" } } }, @@ -4054,11 +4119,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DependencyResponse" + "$ref": "#/components/schemas/AzureResourceTypesResponse" } } }, - "description": "Successfully updated dependency" + "description": "Successfully replaced Azure Resources types" }, "400": { "content": { @@ -4068,7 +4133,7 @@ } } }, - "description": "Invalid endpoint" + "description": "Bad Request" }, "404": { "content": { @@ -4078,40 +4143,44 @@ } } }, - "description": "Entity not found" + "description": "Azure Resources types not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update dependency between entities", + "summary": "Update configured Azure Resources types", "tags": [ - "Dependencies" + "[Integrations] Azure Resources" ], - "x-cortex-mcp-description": "Update dependency between entities. Disabled for MCP access as modifying dependencies requires careful validation to maintain accurate system topology", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}": { - "delete": { - "operationId": "deleteEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "/api/v1/bamboohr/configuration": { + "post": { + "operationId": "BambooHRSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BambooHRConfigurationRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "Successfully deleted entity" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseBambooHRConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -4119,80 +4188,52 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" }, - "405": { - "description": "Entity delete is not allowed" + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete entity", + "summary": "Add a configuration", "tags": [ - "Catalog Entities" + "[Integrations] BambooHR" ], - "x-cortex-mcp-description": "Delete an entity from the catalog. This operation is disabled for MCP access due to its destructive nature.", "x-cortex-mcp-enabled": "false" }, - "get": { - "operationId": "getEntityDetails", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "Depth of the parent / children hierarchy nodes. Can be \u0027full\u0027 or a valid integer", - "in": "query", - "name": "hierarchyDepth", - "required": false, - "schema": { - "type": "string", - "default": "full" - } - }, - { - "description": "List of sub fields to include for hierarchies. Only supports \u0027groups\u0027", - "example": "groups", - "in": "query", - "name": "includeHierarchyFields", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "put": { + "operationId": "BambooHRReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BambooHRConfigurationRequest" } } }, - { - "description": "Include ownership information, default is true", - "in": "query", - "name": "includeOwners", - "required": false, - "schema": { - "type": "boolean" - } - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DetailsResponse" + "$ref": "#/components/schemas/ConfigurationsResponseBambooHRConfigurationResponse" } } }, - "description": "Successfully found entity" + "description": "Successfully updates configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -4200,45 +4241,42 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve entity details", + "summary": "Update the existing configuration", "tags": [ - "Catalog Entities" + "[Integrations] BambooHR" ], - "x-cortex-mcp-description": "Retrieve comprehensive details about a specific entity including its metadata, ownership, hierarchies, and relationships. This is the primary method for getting complete information about services, teams, or domains.", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/archive": { - "put": { - "operationId": "archiveEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "/api/v1/bamboohr/configuration/validate": { + "post": { + "operationId": "BambooHRValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DetailsResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully archived entity" + "description": "Successfully validated configuration" }, "404": { "content": { @@ -4248,57 +4286,34 @@ } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Archive an entity", + "summary": "Validate a configuration", "tags": [ - "Catalog Entities" + "[Integrations] BambooHR" ], - "x-cortex-mcp-description": "Archive an entity. Disabled for MCP access to prevent accidental archival of critical services that could impact system visibility", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/custom-data": { + "/api/v1/bamboohr/configurations": { "delete": { - "operationId": "deleteCustomDataForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "query", - "name": "key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } - } - ], + "operationId": "BambooHRDeleteConfiguration", "responses": { "200": { - "description": "Successfully deleted custom data" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseBambooHRConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -4306,68 +4321,52 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete custom data for entity", + "summary": "Delete a configuration", "tags": [ - "Custom Data" + "[Integrations] BambooHR" ], - "x-cortex-mcp-description": "Delete custom data from an entity. Disabled for MCP access to protect data integrity and prevent accidental removal of critical metadata", "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/bamboohr/default-configuration": { "get": { - "operationId": "getCustomDataForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "operationId": "BambooHRGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomData" - } + "$ref": "#/components/schemas/BambooHRConfigurationResponse" } } }, - "description": "Successfully retrieved custom data. If using pagination, we do not return page, total, or totalPages in the response. An empty array is returned once you reach the end." + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -4377,47 +4376,40 @@ } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List custom data for entity", + "summary": "Retrieve a configuration", "tags": [ - "Custom Data" + "[Integrations] BambooHR" ], - "x-cortex-mcp-description": "List all custom data key-value pairs associated with an entity. Retrieve metadata, configuration settings, and custom attributes stored for services, resources, or domains. Supports pagination for entities with large amounts of custom data", - "x-cortex-mcp-enabled": "true" - }, + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/bitbucket/configuration": { "post": { - "operationId": "addCustomDataForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } - } - ], + "operationId": "BitbucketSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "type": "string" + "oneOf": [ + { + "$ref": "#/components/schemas/BitbucketCloudAtlassianRequest" + }, + { + "$ref": "#/components/schemas/BitbucketCloudPersonalRequest" + }, + { + "$ref": "#/components/schemas/BitbucketOnPremBasicRequest" + }, + { + "$ref": "#/components/schemas/BitbucketWorkspaceTokenRequest" + } + ] } } }, @@ -4428,11 +4420,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomData" + "$ref": "#/components/schemas/ConfigurationsResponseBitbucketConfigurationResponse" } } }, - "description": "Successfully created data" + "description": "Successfully added configuration" }, "400": { "content": { @@ -4442,9 +4434,9 @@ } } }, - "description": "Invalid custom data request" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -4452,53 +4444,32 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add custom data for entity", + "summary": "Add a single configuration", "tags": [ - "Custom Data" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Add custom data to an entity. Disabled for MCP access to prevent uncontrolled metadata modifications that could affect integrations and reporting", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/custom-data/{key}": { - "get": { - "operationId": "getCustomDataForEntityByKey", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "key", - "required": true, - "schema": { - "type": "string" - } - } - ], + "/api/v1/bitbucket/configuration/validate": { + "post": { + "operationId": "BitbucketValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomData" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully retrieved custom data for key" + "description": "Successfully validated all configurations" }, "404": { "content": { @@ -4508,171 +4479,75 @@ } } }, - "description": "Custom data not found for given entity and key" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve custom data for entity by key", + "summary": "Validate all configurations", "tags": [ - "Custom Data" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Retrieve a specific custom data value by key for an entity. Efficiently access individual metadata attributes, configuration values, or custom properties without fetching all custom data", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/custom-events": { - "delete": { - "operationId": "deleteCustomEventsForEntity", + "/api/v1/bitbucket/configuration/validate/{alias}": { + "post": { + "operationId": "BitbucketValidateConfiguration", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "alias", "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "query", - "name": "type", - "required": false, "schema": { "type": "string" } - }, - { - "deprecated": true, - "description": "Use \u0027startTime\u0027 instead", - "in": "query", - "name": "timestamp", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "If provided, events with greater than or equal to timestamp will be deleted (a date-time without a time-zone in the ISO-8601 calendar system)", - "in": "query", - "name": "startTime", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "If provided, events with less than or equal to timestamp will be deleted (a date-time without a time-zone in the ISO-8601 calendar system)", - "in": "query", - "name": "endTime", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } } ], "responses": { "200": { - "description": "Successfully deleted custom events" - }, - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" }, "404": { - "description": "Entity not found" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete ALL custom events for an entity", + "summary": "Validate a configuration", "tags": [ - "Custom Events" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Delete multiple custom events with filters. Disabled for MCP access to preserve event history", "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "listCustomEventsForEntity", + } + }, + "/api/v1/bitbucket/configuration/{alias}": { + "delete": { + "operationId": "BitbucketRemoveConfiguration", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "alias", "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "query", - "name": "type", - "required": false, "schema": { "type": "string" } - }, - { - "deprecated": true, - "description": "Use \u0027startTime\u0027 instead", - "in": "query", - "name": "timestamp", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "If provided, events with greater than or equal to timestamp will be returned (a date-time without a time-zone in the ISO-8601 calendar system)", - "in": "query", - "name": "startTime", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "If provided, events with less than or equal to timestamp will be returned (a date-time without a time-zone in the ISO-8601 calendar system)", - "in": "query", - "name": "endTime", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } } ], "responses": { @@ -4680,83 +4555,80 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventListResponse" + "$ref": "#/components/schemas/ConfigurationsResponseBitbucketConfigurationResponse" } } }, - "description": "Successfully retrieved custom events" + "description": "Successfully deleted configuration" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventListResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad Request" }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventListResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List custom events for entity", + "summary": "Delete a configuration", "tags": [ - "Custom Events" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "List custom events for an entity with optional filtering by type and time range. Supports pagination and filtering by event type, start time, and end time to retrieve historical event data", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" }, - "post": { - "operationId": "createCustomEventForEntity", + "get": { + "operationId": "BitbucketGetConfiguration", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "alias", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SaveCustomEventRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventResponse" + "$ref": "#/components/schemas/BitbucketConfigurationResponse" } } }, - "description": "Successfully created custom event" + "description": "Successfully found configuration" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, @@ -4766,157 +4638,32 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Entity not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Create custom event for entity", - "tags": [ - "Custom Events" - ], - "x-cortex-mcp-description": "Create a new custom event. Disabled for MCP access to prevent external systems from creating events that could affect operational tracking", - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/custom-events/{uuid}": { - "delete": { - "operationId": "deleteCustomEventForEntityByUuid", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "200": { - "description": "Successfully deleted custom event" - }, - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request" - }, - "404": { - "description": "Entity or custom event not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete custom events by UUID", + "summary": "Retrieve a configuration", "tags": [ - "Custom Events" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Delete a specific custom event by UUID. Disabled for MCP access to preserve event history", "x-cortex-mcp-enabled": "false" }, - "get": { - "operationId": "getCustomEventForEntityByUuid", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomEventResponse" - } - } - }, - "description": "Successfully retrieved custom event" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomEventResponse" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomEventResponse" - } - } - }, - "description": "Entity or custom event not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve custom event by UUID", - "tags": [ - "Custom Events" - ], - "x-cortex-mcp-description": "Retrieve a specific custom event by its UUID. Returns event details including title, description, timestamp, type, and any custom data associated with the event", - "x-cortex-mcp-enabled": "true" - }, "put": { - "operationId": "replaceCustomEventForEntityByUuid", + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "BitbucketUpdateConfiguration", "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, { "in": "path", - "name": "uuid", + "name": "alias", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -4924,7 +4671,20 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SaveCustomEventRequest" + "oneOf": [ + { + "$ref": "#/components/schemas/BitbucketUpdateCloudAtlassianRequest" + }, + { + "$ref": "#/components/schemas/BitbucketUpdateCloudPersonalRequest" + }, + { + "$ref": "#/components/schemas/BitbucketUpdateOnPremBasicRequest" + }, + { + "$ref": "#/components/schemas/BitbucketUpdateWorkspaceTokenRequest" + } + ] } } }, @@ -4935,101 +4695,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventResponse" + "$ref": "#/components/schemas/ConfigurationsResponseBitbucketConfigurationResponse" } } }, - "description": "Successfully updated custom event" + "description": "Successfully updated configuration" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Bad Request" }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomEventResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Entity or custom event not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update custom event by UUID", + "summary": "Update a configuration", "tags": [ - "Custom Events" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Update an existing custom event. Disabled for MCP access to maintain event history integrity", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/deploys": { + "/api/v1/bitbucket/configurations": { "delete": { - "operationId": "deleteDeploysForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "query", - "name": "environment", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "sha", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "DEPLOY", - "SCALE", - "ROLLBACK", - "RESTART" - ] - } - } - ], + "operationId": "BitbucketRemoveAllConfigurations", "responses": { "200": { + "description": "Successfully deleted all configurations" + }, + "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomDeploy" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully deleted deployments" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5037,67 +4767,32 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete deployments for entity", + "summary": "Delete all configurations", "tags": [ - "Deploys" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Delete multiple deployments. Disabled for MCP access to preserve deployment history", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "getDeploysForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "operationId": "BitbucketListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomDeployListPaginatedResponse" + "$ref": "#/components/schemas/ConfigurationsResponseBitbucketConfigurationResponse" } } }, - "description": "Successfully retrieved deployments" + "description": "Successfully found configurations" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -5105,38 +4800,25 @@ } } }, - "description": "Entity not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List deployments for entity", + "summary": "Retrieve configurations", "tags": [ - "Deploys" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "List all deployments for a specific catalog entity. Returns deployment history including timestamps, environments, SHAs, and deployment types in paginated format", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "addDeployForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "operationId": "BitbucketSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SaveDeployRequest" + "$ref": "#/components/schemas/ConfigurationsRequestBitbucketConfigurationRequest" } } }, @@ -5147,13 +4829,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomDeploy" + "$ref": "#/components/schemas/MultipleConfigurationsResponseBitbucketConfigurationResponse" } } }, - "description": "Successfully created deployment" + "description": "Successfully added configurations" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5161,56 +4843,34 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add deployment for entity", + "summary": "Add multiple configurations", "tags": [ - "Deploys" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Create a new deployment record. Disabled for MCP access to prevent external systems from modifying deployment history", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/deploys/{uuid}": { - "delete": { - "operationId": "deleteDeployByUuid", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], + "/api/v1/bitbucket/default-configuration": { + "get": { + "operationId": "BitbucketGetDefaultConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomDeploy" + "$ref": "#/components/schemas/BitbucketConfigurationResponse" } } }, - "description": "Successfully deleted deployment" + "description": "Successfully found default configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -5218,47 +4878,27 @@ } } }, - "description": "Entity or deployment not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete deployment by UUID", + "summary": "Retrieve default configuration", "tags": [ - "Deploys" + "[Integrations] Bitbucket" ], - "x-cortex-mcp-description": "Delete a specific deployment. Disabled for MCP access to preserve deployment history", "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "updateDeployByUuid", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], + } + }, + "/api/v1/bugsnag/configuration": { + "post": { + "operationId": "BugsnagSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SaveDeployRequest" + "$ref": "#/components/schemas/BugsnagConfigurationRequest" } } }, @@ -5269,13 +4909,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomDeploy" + "$ref": "#/components/schemas/ConfigurationsResponseBugsnagConfiguration" } } }, - "description": "Successfully updated deployment" + "description": "Successfully added configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -5283,84 +4923,9 @@ } } }, - "description": "Entity or deployment not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Update deployment by UUID", - "tags": [ - "Deploys" - ], - "x-cortex-mcp-description": "Update an existing deployment. Disabled for MCP access to maintain deployment history integrity", - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/documentation/openapi": { - "delete": { - "operationId": "deleteOpenApiDocForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], - "responses": { - "204": { - "description": "Successfully deleted documentation" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Delete OpenAPI docs for entity", - "tags": [ - "Docs" - ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "getOpenApiDocForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "Name of the OpenAPI spec to return. If you have multiple OpenAPI specs configured for your entity as `x-cortex-links`, use this parameter to ensure the correct spec is returned. If this parameter is not specified, we will return the first OpenAPI spec found.", - "in": "query", - "name": "name", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAPISpecification" - } - } - }, - "description": "Successfully found documentation" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5368,37 +4933,25 @@ } } }, - "description": "Documentation not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve OpenAPI docs for entity", + "summary": "Add a configuration", "tags": [ - "Docs" + "[Integrations] Bugsnag" ], "x-cortex-mcp-enabled": "false" }, "put": { - "operationId": "updateOpenApiDocForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "operationId": "BugsnagReplaceConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAPISpecification" + "$ref": "#/components/schemas/BugsnagConfigurationRequest" } } }, @@ -5409,11 +4962,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAPISpecification" + "$ref": "#/components/schemas/ConfigurationsResponseBugsnagConfiguration" } } }, - "description": "Successfully updated documentation" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -5423,47 +4976,42 @@ } } }, - "description": "Invalid request" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update OpenAPI docs for entity", + "summary": "Update the existing configuration", "tags": [ - "Docs" + "[Integrations] Bugsnag" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/gitops-logs": { - "get": { - "operationId": "latestGitOpsLogForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "/api/v1/bugsnag/configuration/validate": { + "post": { + "operationId": "BugsnagValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GitOpsLogEntityResponse" - } + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Retrieve most recent GitOps log for entity" + "description": "Successfully validated configuration" }, "404": { "content": { @@ -5473,47 +5021,32 @@ } } }, - "description": "Entity GitOps log not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve most recent GitOps log for entity", + "summary": "Validate a configuration", "tags": [ - "Catalog Entities" + "[Integrations] Bugsnag" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/groups": { + "/api/v1/bugsnag/configurations": { "delete": { - "operationId": "deleteGroupsFromEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GroupMembershipsRequest" - } - } - }, - "required": true - }, + "operationId": "BugsnagDeleteConfiguration", "responses": { "200": { - "description": "Successfully deleted group memberships" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseBugsnagConfiguration" + } + } + }, + "description": "Successfully deleted configuration" }, "400": { "content": { @@ -5525,7 +5058,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5533,64 +5066,42 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete groups from entity", + "summary": "Delete a configuration", "tags": [ - "Groups" + "[Integrations] Bugsnag" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/bugsnag/default-configuration": { "get": { - "operationId": "listGroupsForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "operationId": "BugsnagGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupMembershipsResponse" + "$ref": "#/components/schemas/BugsnagConfiguration" } } }, - "description": "Successfully retrieved groups" + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -5600,37 +5111,27 @@ } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve groups for entity", + "summary": "Retrieve a configuration", "tags": [ - "Groups" + "[Integrations] Bugsnag" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "addGroupsToEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + } + }, + "/api/v1/buildkite/configuration": { + "post": { + "operationId": "BuildkiteSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupMembershipsRequest" + "$ref": "#/components/schemas/BuildkiteConfigurationRequest" } } }, @@ -5641,11 +5142,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupMembershipsResponse" + "$ref": "#/components/schemas/ConfigurationsResponseBuildkiteConfigurationResponse" } } }, - "description": "Successfully created group memberships" + "description": "Successfully added configuration" }, "400": { "content": { @@ -5657,7 +5158,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5665,49 +5166,42 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add groups to entity", + "summary": "Add a configuration", "tags": [ - "Groups" + "[Integrations] Buildkite" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/integrations/oncall/current": { - "get": { - "operationId": "getCurrentOncallForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + }, + "put": { + "operationId": "BuildkiteReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BuildkiteConfigurationRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CurrentOncallDetails" - } + "$ref": "#/components/schemas/ConfigurationsResponseBuildkiteConfigurationResponse" } } }, - "description": "Successfully retrieved current on-call" + "description": "Successfully updates configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -5715,50 +5209,9 @@ } } }, - "description": "Entity not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve current on-call for entity", - "tags": [ - "On-call" - ], - "x-cortex-mcp-description": "Retrieve the current on-call personnel for an entity in real-time. Shows who is actively responsible for incident response, including primary and secondary on-call, contact information, and rotation schedules", - "x-cortex-mcp-enabled": "true" - } - }, - "/api/v1/catalog/{tagOrId}/integrations/oncall/registration": { - "get": { - "operationId": "getOncallRegistrationForEntity", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OncallRegistration" - } - } - } - }, - "description": "Successfully retrieved on-call registration" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5766,61 +5219,32 @@ } } }, - "description": "Entity or registration not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve on-call registration for entity", + "summary": "Update the existing configuration", "tags": [ - "On-call" + "[Integrations] Buildkite" ], - "x-cortex-mcp-description": "Get the on-call registration details for an entity, including the escalation policy, service mapping, and provider information. Disabled for MCP access to protect sensitive on-call information", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/openapi": { - "get": { - "description": "Retrieve entity descriptor\n\nThe descriptor does not include objects (e.g. custom data, dependencies, etc) defined via the API", - "operationId": "getEntityDescriptor", - "parameters": [ - { - "description": "When true, returns the YAML representation of the descriptor", - "in": "query", - "name": "yaml", - "schema": { - "type": "boolean" - } - }, - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "/api/v1/buildkite/configuration/validate": { + "post": { + "operationId": "BuildkiteValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/JsonNode" - } - ] + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully found entity descriptor" + "description": "Successfully validated configuration" }, "404": { "content": { @@ -5830,50 +5254,34 @@ } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve entity descriptor", + "summary": "Validate a configuration", "tags": [ - "Catalog Entities" + "[Integrations] Buildkite" ], - "x-cortex-mcp-description": "Cortex Catalog API - Access and manage your service catalog, teams, domains, and resources", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/packages": { - "get": { - "operationId": "listPackages", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "/api/v1/buildkite/configurations": { + "delete": { + "operationId": "BuildkiteDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/ConfigurationsResponseBuildkiteConfigurationResponse" } } }, - "description": "All packages. If using pagination, we do not return page, total, or totalPages in the response. An empty array is returned once you reach the end." + "description": "Successfully deleted configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -5881,47 +5289,9 @@ } } }, - "description": "Entity not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "List packages", - "tags": [ - "Packages" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget": { - "delete": { - "operationId": "deleteNugetPackage", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "query", - "name": "name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successfully deleted package" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -5929,70 +5299,34 @@ } } }, - "description": "Entity not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[csharp] Delete Nuget package", + "summary": "Delete a configuration", "tags": [ - "Packages" + "[Integrations] Buildkite" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget/csproj": { - "post": { - "operationId": "uploadNugetCsproj", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - }, - "application/xml": {} - }, - "description": "Stringified version of your *.csproj file", - "required": true - }, + "/api/v1/buildkite/default-configuration": { + "get": { + "operationId": "BuildkiteGetConfiguration", "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "NUGET", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/BuildkiteConfigurationResponse" } } }, - "description": "Successfully saved packages" + "description": "Successfully found configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -6000,67 +5334,7 @@ } } }, - "description": "Entity not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "[csharp] Upload Nuget csproj", - "tags": [ - "Packages" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget/packages-lock": { - "post": { - "operationId": "uploadNugetPackagesLock", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "description": "Stringified version of your nuget package.lock.json file", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "NUGET", - "version": "string" - } - ], - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } - } - } - }, - "description": "Successfully saved packages" + "description": "Bad Request" }, "404": { "content": { @@ -6070,47 +5344,42 @@ } } }, - "description": "Entity not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[csharp] Upload Nuget packages.lock.json", + "summary": "Retrieve a configuration", "tags": [ - "Packages" + "[Integrations] Buildkite" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/packages/go": { + "/api/v1/catalog": { "delete": { - "operationId": "deleteGoPackage", + "description": "Deletes the entities with the given IDs.", + "operationId": "deleteEntitiesByIds", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { + "description": "CIDs of the entities to delete, e.g. `en2da8159dbeefb974`. Entity tags are not accepted.", "in": "query", - "name": "name", - "required": true, + "name": "ids", + "required": false, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], "responses": { "200": { - "description": "Successfully deleted package" + "description": "Successfully deleted entities" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -6118,69 +5387,210 @@ } } }, - "description": "Entity not found" + "description": "Invalid request" + }, + "405": { + "description": "Entity delete is not allowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[go] Delete Go package", + "summary": "Delete entities by ID", "tags": [ - "Packages" + "Catalog Entities" ], + "x-cortex-mcp-description": "Delete entities by explicit IDs. Disabled for MCP access due to the destructive nature of bulk operations that could remove critical infrastructure components.", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/go/gosum": { - "post": { - "operationId": "uploadGoSumPackage", + }, + "get": { + "description": "List all entities across the Service, Resource and Domain Catalogs.\n\nThis API returns summary data for each entity, so refer to the retrieve entity method to lookup more details for a single entity.", + "operationId": "listAllEntities", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, + "description": "Filter based on groups, which correspond to the `x-cortex-groups` field in the Catalog Descriptor. Accepts a comma-delimited list of groups", + "in": "query", + "name": "groups", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + { + "description": "Filter based on owner group names. Returns entities owned by the specified groups, as well as entities owned by any child/sub-teams of those groups. Group names correspond to the `x-cortex-owners` field in the Catalog Descriptor. Accepts a comma-delimited list of owner group names.", + "in": "query", + "name": "owners", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + { + "description": "Depth of the parent / children hierarchy nodes to include for each entity. Defaults to 0, which returns no hierarchy data. Pass \u0027full\u0027 to return the entire hierarchy, or a positive integer to limit the depth.", + "in": "query", + "name": "hierarchyDepth", + "required": false, "schema": { "type": "string", - "description": "Entity identifier - can be a tag or CID" + "default": "0" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { + }, + { + "description": "Filter by git repositories. Supports GitHub (`github:org/repo` or `org/repo`), GitLab (`gitlab:namespace/project`), Bitbucket (`bitbucket:workspace/repo`), and Azure DevOps (`azure-devops:project/repo`). Unprefixed values default to GitHub for backward compatibility.", + "example": "cortexapps%2Fbackend,gitlab:my-group%2Fmy-project", + "in": "query", + "name": "gitRepositories", + "required": false, + "schema": { + "type": "array", + "items": { "type": "string" - } + }, + "default": [] } }, - "description": "Stringified version of your go.sum file", - "required": true - }, + { + "description": "List of sub fields to include for hierarchies. Only supports \u0027groups\u0027", + "example": "groups", + "in": "query", + "name": "includeHierarchyFields", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Filter the response to specific types of entities. By default, this includes services, resources, and domains. Corresponds to the `x-cortex-type` field in the entity descriptor.", + "example": "service,rds,s3,domain", + "in": "query", + "name": "types", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + { + "description": "Filter based on a [search query](https://docs.cortex.io/settings/search). This will search across entity properties. If provided, results will be sorted by relevance.", + "in": "query", + "name": "query", + "required": false, + "schema": { + "type": "string", + "default": "" + } + }, + { + "description": "Whether to include archived entities in the response", + "in": "query", + "name": "includeArchived", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Whether to include custom data for each entity in the response", + "in": "query", + "name": "includeMetadata", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Whether to include links for each entity in the response", + "in": "query", + "name": "includeLinks", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Whether to include Slack channels for each entity in the response", + "in": "query", + "name": "includeSlackChannels", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Whether to include ownership information for each entity in the response", + "in": "query", + "name": "includeOwners", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "List of sub fields to include for different types", + "example": "team:members", + "in": "query", + "name": "includeNestedFields", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "GO", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/ListCatalogEntities" } } }, - "description": "Successfully saved packages" + "description": "Successfully found entities" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -6188,85 +5598,78 @@ } } }, - "description": "Entity not found" + "description": "Invalid filters" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[golang] Upload go.sum", + "summary": "List entities", "tags": [ - "Packages" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List and enumerate catalog entities by structured filters (groups, types, owners, git repositories) with pagination. To find or search for entities by name, relevance, team, or domain, use searchCatalog instead.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/catalog/{tagOrId}/packages/java": { - "delete": { - "operationId": "deleteJavaPackage", + "/api/v1/catalog-pages": { + "get": { + "description": "Retrieves a list of catalogs.\n\nAPI key must have the `View catalogs` permission.", + "operationId": "listCatalogPages", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "integer", + "format": "int32", + "default": 250 } }, { + "description": "Page number to return, 0-indexed. Default 0.", "in": "query", - "name": "name", + "name": "page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 } } ], "responses": { "200": { - "description": "Successfully deleted package" - }, - "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CatalogPageListResponse" } } }, - "description": "Entity not found" + "description": "Successfully retrieved catalogs" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[java] Delete Java package", + "summary": "List catalogs", "tags": [ - "Packages" + "Catalogs" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List the catalog pages configured in Cortex (the catalogs shown in the sidebar, such as Services or Domains), with their slugs and how each one selects its entities. Use getCatalogPage for one catalog by slug.", + "x-cortex-mcp-enabled": "true" }, "post": { - "operationId": "uploadJavaPackage", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "description": "Creates a catalog, or replaces the existing one with the same slug.\n\nAPI key must have the `Edit catalogs` permission.", + "operationId": "upsertCatalogPage", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PackageVersionRequest" + "$ref": "#/components/schemas/CatalogPageRequest" } } }, @@ -6276,19 +5679,32 @@ "200": { "content": { "application/json": { - "example": { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "JAVA", - "version": "string" - }, "schema": { - "$ref": "#/components/schemas/Package" + "$ref": "#/components/schemas/CatalogPage" } } }, - "description": "Successfully saved package" + "description": "Successfully created or replaced the catalog" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "The catalog is managed by Cortex and cannot be modified" }, "404": { "content": { @@ -6298,69 +5714,46 @@ } } }, - "description": "Entity not found" + "description": "The referenced relationship type was not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[java] Upload single Java package", + "summary": "Create or replace a catalog", "tags": [ - "Packages" + "Catalogs" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Create a catalog page, or replace the existing one with the same slug. A replace overwrites every field. Name, slug and iconTag are required. Choose the page\u0027s entities with a `filter` (FILTER catalog) or a `relationshipTypeTag` (RELATIONSHIP_TYPE catalog). A DOMAIN catalog must set type\u003dDOMAIN explicitly. Catalogs managed by Cortex cannot be changed (403). Requires the `Edit catalogs` permission.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/catalog/{tagOrId}/packages/java/bulk": { - "post": { - "operationId": "uploadJavaPackages", + "/api/v1/catalog-pages/{slug}": { + "delete": { + "operationId": "deleteCatalogPage", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "slug", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PackageVersionRequest" - } - } - } - }, - "required": true - }, "responses": { "200": { + "description": "Successfully deleted catalog" + }, + "403": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "JAVA", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully saved packages" + "description": "The catalog is managed by Cortex and cannot be deleted" }, "404": { "content": { @@ -6370,67 +5763,41 @@ } } }, - "description": "Entity not found" + "description": "Catalog not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[java] Upload multiple Java packages", + "summary": "Delete catalog", "tags": [ - "Packages" + "Catalogs" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/java/maven-pom": { - "post": { - "operationId": "uploadMavenPom", + }, + "get": { + "description": "Retrieves a single catalog by slug.\n\nAPI key must have the `View catalogs` permission.", + "operationId": "getCatalogPage", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "slug", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "description": "Stringified version of your pom.xml file", - "required": true - }, "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "JAVA", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/CatalogPage" } } }, - "description": "Successfully saved packages" + "description": "Successfully retrieved catalog" }, "404": { "content": { @@ -6440,115 +5807,148 @@ } } }, - "description": "Entity not found" + "description": "Catalog not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[java] Upload maven pom.xml", + "summary": "Get catalog", "tags": [ - "Packages" + "Catalogs" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Get one catalog page by slug, including its type and the filter or relationship type that selects its entities. Read this before upsertCatalogPage, which replaces the whole page.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/catalog/{tagOrId}/packages/node": { - "delete": { - "operationId": "deleteNodePackage", + "/api/v1/catalog/batch/{type}": { + "get": { + "description": "Gets a list of entities based on type and batch key plus identifier", + "operationId": "getEntitiesByBatchIdentifier", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The type name of the batches to retrieve. This corresponds to the `x-cortex-type` field in the entity descriptor.", "in": "path", - "name": "tagOrId", + "name": "type", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } }, { + "description": "The batch key to filter entities by. This is a custom field set as entity metadata `__cortex_batch.key`", "in": "query", - "name": "name", + "name": "key", "required": true, "schema": { "type": "string" } + }, + { + "description": "The batch version. This is a custom field set as entity metadata `__cortex_batch.identifier`, required if `compare` is specified", + "in": "query", + "name": "version", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "The type over comparison to perform. Ignored unless `version` parameter must also be provided. Values can be `eq`, `ne`.", + "in": "query", + "name": "compare", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "includeArchived", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } } ], "responses": { "200": { - "description": "Successfully deleted package" - }, - "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/EntityCIDListResponse" } } }, - "description": "Entity not found" + "description": "List of entity identifiers matching the batch key and type, based on the specified compare parameter." }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[node] Delete Node package", + "summary": "Get entities by batch identifier", "tags": [ - "Packages" + "Catalog Entities" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/packages/node/package-json": { - "post": { - "operationId": "uploadNpmPackageJson", + "/api/v1/catalog/custom-data": { + "delete": { + "description": "Use this endpoint when attempting to delete custom data where the key contains non-alphanumeric characters. Otherwise, use the standard API under `Custom Data`.", + "operationId": "getCustomDataForEntityByKeyAdvanced", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", + "in": "query", + "name": "tag", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } + }, + { + "in": "query", + "name": "key", + "required": true, + "schema": { + "type": "string" } }, - "description": "Stringified version of your package.json", - "required": true - }, + { + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { - "content": { - "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "NODE", - "version": "string" - } - ], - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } - } - } - }, - "description": "Successfully saved packages" + "description": "Successfully deleted custom data" }, "404": { "content": { @@ -6564,61 +5964,49 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[js] Upload NPM/Yarn/PNPM package.json", + "summary": "Delete custom data by key for entity", "tags": [ - "Packages" + "Custom Data [Advanced]" ], + "x-cortex-mcp-description": "Cortex Custom Data (Advanced) - Read an entity\u0027s custom data when the tag or key cannot sit in a path segment", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/node/package-lock": { - "post": { - "operationId": "uploadNpmPackageLockJson", + }, + "get": { + "description": "Use this endpoint when attempting to delete custom data where the key contains non-alphanumeric characters. Otherwise, use the standard API under `Custom Data`.", + "operationId": "retrieveCustomDataForEntityAdvanced", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", + "description": "Entity tag (x-cortex-tag), supports non-alphanumeric characters", + "in": "query", + "name": "tag", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" + } + }, + { + "description": "When set, returns the entity\u0027s value at this key. Otherwise, returns all custom data key/values for the entity.", + "in": "query", + "name": "key", + "required": false, + "schema": { + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "description": "Stringified version of your NPM package-lock.json", - "required": true - }, "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "NODE", - "version": "string" - } - ], "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Package" + "$ref": "#/components/schemas/CustomData" } } } }, - "description": "Successfully saved packages" + "description": "Successfully retrieved custom data" }, "404": { "content": { @@ -6634,25 +6022,31 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[js] Upload NPM package-lock.json", + "summary": "Retrieve custom data for entity", "tags": [ - "Packages" + "Custom Data [Advanced]" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/node/pnpm-lock": { + "x-cortex-mcp-description": "List an entity\u0027s custom data, taking the entity tag as a query parameter. Use this form when the tag contains characters that cannot sit in a path segment; otherwise use getCustomDataForEntity.", + "x-cortex-mcp-enabled": "true" + }, "post": { - "operationId": "uploadPnpmLock", + "operationId": "addCustomDataForEntityAdvanced", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", + "in": "query", + "name": "tag", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" + } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -6660,35 +6054,32 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/DataCreateRequest" } } }, - "description": "Stringified version of your pnpm-lock.yaml file; supported version 6 or higher", "required": true }, "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "NODE", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/CustomData" } } }, - "description": "Successfully saved packages" + "description": "Successfully created data" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid custom data request" }, "404": { "content": { @@ -6704,25 +6095,24 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[js] Upload pnpm-lock.yaml", + "summary": "Add custom data for entity", "tags": [ - "Packages" + "Custom Data [Advanced]" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/node/yarn-lock": { - "post": { - "operationId": "uploadYarnLock", + "x-cortex-mcp-description": "Set one custom data key on an entity whose tag is passed as a query parameter. Use this form when the tag contains characters that cannot go in a path segment; otherwise use addCustomDataForEntity. Works the same way: upsert by key, and overwriting a key from another source needs force\u003dtrue.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "description": "Add multiple key/values of custom data to multiple entities", + "operationId": "createOrUpdateCustomDataInBulk", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "boolean" } } ], @@ -6730,37 +6120,24 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/BulkCustomDataRequest" } } }, - "description": "Stringified version of your yarn.lock file", "required": true }, "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "NODE", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/BulkCustomDataResponse" } } }, - "description": "Successfully saved packages" + "description": "Successfully created/updated custom data" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -6768,117 +6145,102 @@ } } }, - "description": "Entity not found" + "description": "Invalid custom data request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[js] Upload yarn.lock", + "summary": "Add custom data in bulk", "tags": [ - "Packages" + "Custom Data" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/packages/python": { - "delete": { - "operationId": "deletePythonPackage", + "/api/v1/catalog/definitions": { + "get": { + "description": "List entity types\n\nResponse excludes Cortex default types of service, domain, and team.", + "operationId": "listDefinitions", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", + "description": "When true, returns the built-in entity types that Cortex provides, such as `rds` and `s3`. Defaults to false.", + "in": "query", + "name": "includeBuiltIn", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "integer", + "format": "int32", + "default": 250 } }, { + "description": "Page number to return, 0-indexed. Default 0.", "in": "query", - "name": "name", + "name": "page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 } } ], "responses": { "200": { - "description": "Successfully deleted package" - }, - "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CatalogDefinitionsListResponse" } } }, - "description": "Entity not found" + "description": "Successfully found entity types" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[python] Delete Python package", + "summary": "List entity types", "tags": [ - "Packages" + "Entity Types" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/packages/python/pipfile": { + "x-cortex-mcp-description": "List the entity type definitions in this workspace - the types an entity can be, each with the JSON schema its descriptor must satisfy. Read this before interpreting or composing an entity\u0027s custom fields.", + "x-cortex-mcp-enabled": "true" + }, "post": { - "operationId": "uploadPipfileLock", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "operationId": "createDefinition", "requestBody": { "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/CreateCatalogDefinitionRequest" } } }, - "description": "Stringified version of your Pipfile.lock file", "required": true }, "responses": { "200": { "content": { "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "PYTHON", - "version": "string" - } - ], "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } + "$ref": "#/components/schemas/CatalogDefinitionResponse" } } }, - "description": "Successfully saved packages" + "description": "Successfully created entity type" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -6886,67 +6248,36 @@ } } }, - "description": "Entity not found" + "description": "Failed to create entity type" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[python] Upload pipfile.lock", + "summary": "Create entity type", "tags": [ - "Packages" + "Entity Types" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Create a custom entity type. It needs a `type` slug and a JSON `schema` that every entity of this type must satisfy; name, description and iconTag are optional. Fails if the type already exists or conflicts with a built-in type. To change an existing type, use updateDefinition.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/catalog/{tagOrId}/packages/python/requirements": { - "post": { - "operationId": "uploadRequirementsTxt", + "/api/v1/catalog/definitions/{type}": { + "delete": { + "operationId": "deleteDefinition", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "type", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "description": "Stringified version of your requirements.txt file", - "required": true - }, "responses": { "200": { - "content": { - "application/json": { - "example": [ - { - "dateCreated": "2023-01-01T01:01:01.000Z", - "id": 0, - "name": "string", - "packageType": "PYTHON", - "version": "string" - } - ], - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Package" - } - } - } - }, - "description": "Successfully saved packages" + "description": "Successfully deleted entity type" }, "404": { "content": { @@ -6956,62 +6287,29 @@ } } }, - "description": "Entity not found" + "description": "Entity type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[python] Upload requirements.txt", + "summary": "Delete entity type", "tags": [ - "Packages" + "Entity Types" ], + "x-cortex-mcp-description": "Cortex Entity Types API - Read the entity type definitions and the descriptor schema each one requires", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/catalog/{tagOrId}/relationships/{relationshipTypeTag}/destinations": { + }, "get": { - "description": "List all entity destinations for a certain relationship type. Optional depth parameter to limit the depth of the relationship tree.", - "operationId": "listEntityDestinationsForRelationshipType", + "operationId": "getDefinition", "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, { "in": "path", - "name": "relationshipTypeTag", + "name": "type", "required": true, "schema": { "type": "string" } - }, - { - "description": "Maximum depth to traverse in the relationship hierarchy. Defaults to 1 (i.e., direct relationships only).", - "example": 2, - "in": "query", - "name": "depth", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "If true will include relationships that traverse archived entities", - "example": false, - "in": "query", - "name": "includeArchived", - "required": false, - "schema": { - "type": "boolean", - "default": false - } } ], "responses": { @@ -7019,11 +6317,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDestinationsResponse" + "$ref": "#/components/schemas/CatalogDefinitionResponse" } } }, - "description": "Successfully retrieved entity sources" + "description": "Successfully found entity types" }, "404": { "content": { @@ -7033,43 +6331,32 @@ } } }, - "description": "Entity or relationship type not found" + "description": "Entity type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List entity destinations for a relationship type", + "summary": "Retrieve entity type", "tags": [ - "Entity Relationships [Beta]" + "Entity Types" ], - "x-cortex-mcp-description": "List all destinations for a certain relationship type \u0026 entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.", + "x-cortex-mcp-description": "Get one entity type definition by type, including the JSON schema its descriptor must satisfy.", "x-cortex-mcp-enabled": "true" }, - "post": { - "description": "Add direct destinations for a given entity and entity relationship type", - "operationId": "addEntityDestinations", + "put": { + "operationId": "updateDefinition", "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, { "in": "path", - "name": "relationshipTypeTag", + "name": "type", "required": true, "schema": { "type": "string" } }, { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "description": "When true, schema will be updated even if it results in broken schemas for existing entities. Defaults to false.", "in": "query", "name": "force", "required": false, @@ -7082,7 +6369,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateEntityRelationshipDestinations" + "$ref": "#/components/schemas/UpdateCatalogDefinitionRequest" } } }, @@ -7093,11 +6380,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDestinationsResponse" + "$ref": "#/components/schemas/CatalogDefinitionResponse" } } }, - "description": "Successfully added entity destinations" + "description": "Successfully updated entity type" }, "400": { "content": { @@ -7107,7 +6394,7 @@ } } }, - "description": "Relationship validation error" + "description": "Failed to update entity type" }, "404": { "content": { @@ -7117,55 +6404,75 @@ } } }, - "description": "Entity or relationship type not found" + "description": "Entity type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add direct entity destinations for a given entity", + "summary": "Update entity type", "tags": [ - "Entity Relationships [Beta]" + "Entity Types" ], - "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "Update all direct destinations for a given entity and entity relationship type", - "operationId": "updateEntityDestinations", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "x-cortex-mcp-description": "Replace an existing custom entity type\u0027s name, description and JSON schema. Fields you leave out are cleared, except iconTag, which is kept. The type slug itself cannot be changed. If active entities use the type, a schema change is rejected unless force\u003dtrue, and force may make those entities fail validation. Returns 404 if the type does not exist. Read the current version with getDefinition first.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/dependencies": { + "delete": { + "operationId": "deleteDependenciesInBulk", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkDependencyRequest" + } } }, - { - "in": "path", - "name": "relationshipTypeTag", - "required": true, - "schema": { - "type": "string" - } + "required": true + }, + "responses": { + "204": { + "description": "Successfully deleted dependencies" }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Cannot modify dependency that is defined in cortex.yaml" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Delete dependencies in bulk", + "tags": [ + "Dependencies" ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "This API allows you to create multiple dependencies for multiple entities at once.", + "operationId": "createOrUpdateDependenciesInBulk", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateEntityRelationshipDestinations" + "$ref": "#/components/schemas/BulkDependencyRequest" } } }, @@ -7176,11 +6483,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityDestinationsResponse" + "$ref": "#/components/schemas/BulkDependencyResponse" } } }, - "description": "Successfully updated entity destinations" + "description": "Successfully created / updated dependencies" }, "400": { "content": { @@ -7190,7 +6497,7 @@ } } }, - "description": "Relationship validation error" + "description": "Cannot modify dependency that is defined in cortex.yaml" }, "404": { "content": { @@ -7200,61 +6507,52 @@ } } }, - "description": "Entity or relationship type not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update direct entity destinations for a given entity", + "summary": "Create or update dependencies in bulk", "tags": [ - "Entity Relationships [Beta]" + "Dependencies" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/catalog/{tagOrId}/relationships/{relationshipTypeTag}/sources": { - "get": { - "description": "List all entity sources for a certain relationship type. Optional depth parameter to limit the depth of the relationship tree.", - "operationId": "listEntitySourcesForRelationshipType", + "/api/v1/catalog/deploys": { + "delete": { + "description": "Filter and delete deploys by SHA hash, environment, or type. Note that at least one of the filters need to be set.\nIf looking to delete all deployments for an entity, use the `Delete all deploys for entity` endpoint instead.", + "operationId": "deleteDeploysByFilter", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "relationshipTypeTag", - "required": true, + "in": "query", + "name": "environment", + "required": false, "schema": { "type": "string" } }, { - "description": "Maximum depth to traverse in the relationship hierarchy. Defaults to 1 (i.e., direct relationships only).", - "example": 2, "in": "query", - "name": "depth", + "name": "sha", "required": false, "schema": { "type": "string" } }, { - "description": "If true will include relationships that traverse archived entities", - "example": false, "in": "query", - "name": "includeArchived", + "name": "type", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "enum": [ + "DEPLOY", + "SCALE", + "ROLLBACK", + "RESTART" + ] } } ], @@ -7263,13 +6561,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntitySourcesResponse" + "$ref": "#/components/schemas/DeploysResponse" } } }, - "description": "Successfully retrieved entity sources" + "description": "Successfully deleted deployment" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -7277,71 +6575,33 @@ } } }, - "description": "Entity or relationship type not found" + "description": "Trying to delete deploys without any filters" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List entity sources for a relationship type", + "summary": "Delete deploys by filter", "tags": [ - "Entity Relationships [Beta]" - ], - "x-cortex-mcp-description": "List all sources for a certain relationship type \u0026 entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.", - "x-cortex-mcp-enabled": "true" - }, - "post": { - "description": "Add direct sources for a given entity and entity relationship type", - "operationId": "addEntitySources", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "in": "path", - "name": "relationshipTypeTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } - } + "Deploys" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEntityRelationshipSources" - } - } - }, - "required": true - }, + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/catalog/deploys/all": { + "delete": { + "description": "Dangerous endpoint that blows away deploys for all entities", + "operationId": "deleteAllDeploys", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntitySourcesResponse" + "$ref": "#/components/schemas/DeploysResponse" } } }, - "description": "Successfully added entity sources" + "description": "Successfully deleted all deployments" }, "400": { "content": { @@ -7351,124 +6611,193 @@ } } }, - "description": "Relationship validation error" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Entity or relationship type not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add direct entity sources for a given entity", + "summary": "Delete all deployments for all entities", "tags": [ - "Entity Relationships [Beta]" + "Deploys" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "Update all direct sources for a given entity and entity relationship type", - "operationId": "updateEntitySources", + } + }, + "/api/v1/catalog/descriptors": { + "get": { + "description": "List entity descriptors\n\nThe descriptors do not include objects (e.g. custom data, dependencies, etc) defined via the API", + "operationId": "listEntityDescriptors", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", + "description": "When true, returns the YAML representation of the descriptors", + "in": "query", + "name": "yaml", + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter the response to specific types of entities. By default, this includes services, resources, and domains. Corresponds to the `x-cortex-type` field in the entity descriptor.", + "example": "service,rds,s3,domain", + "in": "query", + "name": "types", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Number of entities to return per page", + "in": "query", + "name": "pageSize", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "integer", + "format": "int32" } }, { - "in": "path", - "name": "relationshipTypeTag", + "description": "Page number to return, 0 indexed", + "in": "query", + "name": "page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "description": "Whether to include archived entities in the response", "in": "query", - "name": "force", + "name": "includeArchived", "required": false, "schema": { "type": "boolean" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEntityRelationshipSources" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntitySourcesResponse" - } - } - }, - "description": "Successfully updated entity sources" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Relationship validation error" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/YamlDescriptorsListResponse" + }, + { + "$ref": "#/components/schemas/JsonDescriptorsListResponse" + } + ] } } }, - "description": "Entity or relationship type not found" + "description": "Successfully retrieved entity descriptors" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update direct entity sources for a given entity", + "summary": "List entity descriptors", "tags": [ - "Entity Relationships [Beta]" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List the Cortex descriptors of many entities, with pagination. Returns JSON by default; pass yaml\u003dtrue for the YAML form. Filter with types, and set includeArchived to reach archived entities.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/catalog/{tagOrId}/scorecards": { + "/api/v1/catalog/search": { "get": { - "operationId": "listScorecardScoresForEntity", + "description": "Relevance-ranked catalog search. Returns a lean, hydrated result set scoped by query and/or filters.", + "operationId": "searchCatalog", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, + "description": "Relevance search text. Plain words work; AND/OR/NOT supported.", + "in": "query", + "name": "query", + "required": false, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" + } + }, + { + "description": "Restrict to entity types, e.g. service, domain, team, resource.", + "in": "query", + "name": "types", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Owner team tags. Returns entities owned by these teams, including their sub-teams.", + "in": "query", + "name": "owners", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Domain tags. Returns entities in these domains, including their sub-domains.", + "in": "query", + "name": "domains", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Catalog slug. Scopes the search to that catalog\u0027s entities.", + "in": "query", + "name": "catalog", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "0-indexed page number.", + "in": "query", + "name": "page", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Results per page, 1-100.", + "in": "query", + "name": "pageSize", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "in": "query", + "name": "includeArchived", + "required": false, + "schema": { + "type": "boolean", + "default": false } } ], @@ -7477,61 +6806,48 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ScorecardScore" - } - } - } - }, - "description": "All entity Scorecard scores" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CatalogSearchResponse" } } }, - "description": "Entity not found" + "description": "OK" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve entity Scorecard scores", + "summary": "Search entities", "tags": [ "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Search the catalog for entities (services, domains, teams, resources), ranked by relevance. This is the primary way to find entities. Put search text in `query` (plain words work; AND/OR/NOT supported). Scope with `types` (e.g. service, domain, team); `owners` to get everything a team owns, including its sub-teams; `domains` to get everything within a domain, including its sub-domains; or `catalog` (a catalog slug). Returns a lean result per entity (cid, tag, type, name, description, owner emails, owning team tags, groups, status); `groups` are the free-form x-cortex-groups tags used to organize the catalog. Use getEntityDetails for the full record of a single entity.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/catalog/{tagOrId}/unarchive": { - "put": { - "operationId": "unarchiveEntity", + "/api/v1/catalog/{callerTag}/dependencies": { + "delete": { + "description": "Deletes any outgoing dependencies from the entity. Note: this only deletes dependencies that were created via the API.", + "operationId": "deleteDependenciesFromEntity", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", "in": "path", - "name": "tagOrId", + "name": "callerTag", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], "responses": { - "200": { + "204": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DetailsResponse" + "$ref": "#/components/schemas/DependencyResponse" } } }, - "description": "Successfully unarchived entity" + "description": "Successfully deleted dependencies" }, "404": { "content": { @@ -7541,88 +6857,91 @@ } } }, - "description": "Entity not found" + "description": "Caller not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Unarchive an entity", + "summary": "Delete dependencies from entity", "tags": [ - "Catalog Entities" + "Dependencies" ], - "x-cortex-mcp-description": "Unarchive an entity. Disabled for MCP access to maintain consistent entity lifecycle management", + "x-cortex-mcp-description": "Delete all dependencies for an entity. Disabled for MCP access to protect dependency graph integrity and prevent accidental removal of critical relationship data", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/circleci/configuration": { - "post": { - "operationId": "CircleCISaveConfiguration", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CircleCiConfigurationRequest" - } + }, + "get": { + "operationId": "listDependenciesForEntity", + "parameters": [ + { + "in": "path", + "name": "callerTag", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" - } - } - }, - "description": "Successfully added configuration" + { + "in": "query", + "name": "includeOutgoing", + "required": false, + "schema": { + "type": "boolean", + "default": true + } }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" + { + "in": "query", + "name": "includeIncoming", + "required": false, + "schema": { + "type": "boolean", + "default": false + } }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Whether to include dependencies on archived entities in the response", + "in": "query", + "name": "includeArchived", + "required": false, + "schema": { + "type": "boolean", + "default": false + } } - }, - "summary": "Add a single configuration", - "tags": [ - "[Integrations] CircleCI" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/circleci/configuration/validate": { - "post": { - "operationId": "CircleCIValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + "$ref": "#/components/schemas/DependencyResponse" } } }, - "description": "Successfully validated all configurations" + "description": "Successfully found entity dependencies" }, "404": { "content": { @@ -7632,87 +6951,68 @@ } } }, - "description": "Configuration not found" + "description": "Entity dependencies not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "Retrieve all dependencies for an entity", "tags": [ - "[Integrations] CircleCI" + "Dependencies" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List all dependencies for an entity including both incoming (who depends on this service) and outgoing (what this service depends on) relationships. Essential for understanding service interactions, planning changes, and assessing blast radius.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/circleci/configuration/validate/{alias}": { - "post": { - "operationId": "CircleCIValidateConfiguration", + "/api/v1/catalog/{callerTag}/dependencies/{calleeTag}": { + "delete": { + "description": "Deletes a single dependency edge between the `caller` and the `callee`. \nNote: This is only supported for edges created via the API.", + "operationId": "deleteDependency", "parameters": [ { "in": "path", - "name": "alias", + "name": "callerTag", "required": true, "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" - } - } - }, - "description": "Successfully validated configuration" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Validate a configuration", - "tags": [ - "[Integrations] CircleCI" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/circleci/configuration/{alias}": { - "delete": { - "operationId": "CircleCIRemoveConfiguration", - "parameters": [ { "in": "path", - "name": "alias", + "name": "calleeTag", "required": true, "schema": { "type": "string" } + }, + { + "in": "query", + "name": "method", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "path", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { - "200": { + "204": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" + "$ref": "#/components/schemas/DependencyResponse" } } }, - "description": "Successfully deleted configuration" + "description": "Successfully deleted dependency" }, "400": { "content": { @@ -7722,17 +7022,7 @@ } } }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Invalid endpoint" }, "404": { "content": { @@ -7742,28 +7032,54 @@ } } }, - "description": "Configuration not found" + "description": "Dependency not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a configuration", + "summary": "Delete dependency", "tags": [ - "[Integrations] CircleCI" + "Dependencies" ], + "x-cortex-mcp-description": "Delete a specific dependency between two entities. Disabled for MCP access as removing dependencies can mask critical system relationships", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "CircleCIGetConfiguration", + "description": "If a dependency exists between the `callee` and the `caller`, returns metadata about the edge.", + "operationId": "getDependency", "parameters": [ { "in": "path", - "name": "alias", + "name": "callerTag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "calleeTag", "required": true, "schema": { "type": "string" } + }, + { + "in": "query", + "name": "method", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "path", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -7771,11 +7087,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CircleCiConfiguration" + "$ref": "#/components/schemas/DependencyResponse" } } }, - "description": "Successfully found configuration" + "description": "Successfully found dependency" }, "400": { "content": { @@ -7785,7 +7101,7 @@ } } }, - "description": "Bad Request" + "description": "Invalid endpoint" }, "404": { "content": { @@ -7795,99 +7111,79 @@ } } }, - "description": "Configuration not found" + "description": "Dependency not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a configuration", + "summary": "Retrieve dependency between entities", "tags": [ - "[Integrations] CircleCI" + "Dependencies" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Get specific dependency details between two entities including method, path, and metadata. Useful for understanding the nature of the relationship, API contracts, and communication patterns between services.", + "x-cortex-mcp-enabled": "true" }, - "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "CircleCIUpdateConfiguration", + "post": { + "operationId": "createDependency", "parameters": [ { + "description": "The entity tag (x-cortex-tag) for the callee entity (\"from\" entity)", "in": "path", - "name": "alias", + "name": "callerTag", "required": true, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CircleCiUpdateConfigurationRequest" - } + }, + { + "description": "The entity tag (x-cortex-tag) for the caller entity (\"to\" entity)", + "in": "path", + "name": "calleeTag", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" - } - } - }, - "description": "Successfully updated configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" + { + "description": "HTTP Method", + "example": "POST", + "in": "query", + "name": "method", + "required": false, + "schema": { + "type": "string" + } }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } + { + "in": "query", + "name": "path", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DependencyCreateRequest" } - }, - "description": "Forbidden" + } }, - "404": { + "required": true + }, + "responses": { + "201": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/DependencyResponse" } } }, - "description": "Configuration not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Update a configuration", - "tags": [ - "[Integrations] CircleCI" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/circleci/configurations": { - "delete": { - "operationId": "CircleCIRemoveAllConfigurations", - "responses": { - "200": { - "description": "Successfully deleted all configurations" + "description": "Successfully created dependency" }, "400": { "content": { @@ -7897,9 +7193,9 @@ } } }, - "description": "Bad Request" + "description": "Invalid endpoint" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -7907,58 +7203,61 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete all configurations", + "summary": "Create dependency from entity", "tags": [ - "[Integrations] CircleCI" + "Dependencies" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Create a dependency from a caller entity to a callee entity, with an optional description and JSON metadata. Optional method and path scope it to an endpoint, which must exist in the callee\u0027s OpenAPI spec. Fails if the same dependency already exists; to change one, use updateDependency.", + "x-cortex-mcp-enabled": "true" }, - "get": { - "operationId": "CircleCIListConfigurations", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" - } - } - }, - "description": "Successfully found configurations" + "put": { + "description": "If a dependency exists between two entities, replace the metadata with the payload. \nNote: This only supports dependencies created via the API.", + "operationId": "updateDependency", + "parameters": [ + { + "in": "path", + "name": "callerTag", + "required": true, + "schema": { + "type": "string" + } }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" + { + "in": "path", + "name": "calleeTag", + "required": true, + "schema": { + "type": "string" + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" + { + "in": "query", + "name": "method", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "path", + "required": false, + "schema": { + "type": "string" + } } - }, - "summary": "Retrieve configurations", - "tags": [ - "[Integrations] CircleCI" ], - "x-cortex-mcp-enabled": "false" - }, - "post": { - "operationId": "CircleCISaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestCircleCiConfigurationRequest" + "$ref": "#/components/schemas/DependencyUpdateRequest" } } }, @@ -7969,13 +7268,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseCircleCiConfiguration" + "$ref": "#/components/schemas/DependencyResponse" } } }, - "description": "Successfully added configurations" + "description": "Successfully updated dependency" }, - "403": { + "400": { "content": { "application/json": { "schema": { @@ -7983,34 +7282,50 @@ } } }, - "description": "Forbidden" + "description": "Invalid endpoint" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add multiple configurations", + "summary": "Update dependency between entities", "tags": [ - "[Integrations] CircleCI" + "Dependencies" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Set the description and metadata of a caller-to-callee dependency (optionally scoped by method and path). Both fields are overwritten, and null clears them. If the dependency does not exist it is created, so this is an idempotent upsert. Only affects dependencies created through the API, not ones from the descriptor or integrations.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/circleci/default-configuration": { - "get": { - "operationId": "CircleCIGetDefaultConfiguration", + "/api/v1/catalog/{tagOrId}": { + "delete": { + "operationId": "deleteEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CircleCiConfiguration" - } - } - }, - "description": "Successfully found default configuration" + "description": "Successfully deleted entity" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -8018,54 +7333,80 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" + }, + "405": { + "description": "Entity delete is not allowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "Delete entity", "tags": [ - "[Integrations] CircleCI" + "Catalog Entities" ], + "x-cortex-mcp-description": "Delete an entity from the catalog. This operation is disabled for MCP access due to its destructive nature.", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/coralogix/configuration": { - "post": { - "operationId": "CoralogixSaveConfiguration", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CoralogixConfigurationRequest" + }, + "get": { + "operationId": "getEntityDetails", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Depth of the parent / children hierarchy nodes. Can be \u0027full\u0027 or a valid integer", + "in": "query", + "name": "hierarchyDepth", + "required": false, + "schema": { + "type": "string", + "default": "full" + } + }, + { + "description": "List of sub fields to include for hierarchies. Only supports \u0027groups\u0027", + "example": "groups", + "in": "query", + "name": "includeHierarchyFields", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "required": true - }, + { + "description": "Include ownership information, default is true", + "in": "query", + "name": "includeOwners", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" - } - } - }, - "description": "Successfully added configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/DetailsResponse" } } }, - "description": "Bad Request" + "description": "Successfully found entity" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -8073,32 +7414,45 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "Retrieve entity details", "tags": [ - "[Integrations] Coralogix" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Retrieve comprehensive details about a specific entity including its metadata, ownership, hierarchies, and relationships. This is the primary method for getting complete information about services, teams, or domains.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/coralogix/configuration/validate": { - "post": { - "operationId": "CoralogixValidateAllConfigurations", + "/api/v1/catalog/{tagOrId}/archive": { + "put": { + "operationId": "archiveEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + "$ref": "#/components/schemas/DetailsResponse" } } }, - "description": "Successfully validated all configurations" + "description": "Successfully archived entity" }, "404": { "content": { @@ -8108,29 +7462,33 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "Archive an entity", "tags": [ - "[Integrations] Coralogix" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Archive an entity by tag or CID. Archived entities are hidden from the catalog and from default searches and listings, but nothing is deleted. Archiving an entity that is already archived changes nothing. Reverse it with unarchiveEntity. Returns the entity\u0027s full details, and 404 if the entity is not found.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/coralogix/configuration/validate/{alias}": { - "post": { - "operationId": "CoralogixValidateConfiguration", + "/api/v1/catalog/{tagOrId}/aws": { + "get": { + "description": "\n Returns all cached AWS resource details for the specified entity.\n This endpoint serves cached data only and does not make live AWS API calls.\n ", + "operationId": "AWSGetAwsResources", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], @@ -8139,11 +7497,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/AwsCatalogResponse" } } }, - "description": "Successfully validated configuration" + "description": "Successfully retrieved AWS resource details" }, "404": { "content": { @@ -8153,62 +7511,55 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found or no AWS resource details cached" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate a configuration", + "summary": "Get AWS resource details for an entity", "tags": [ - "[Integrations] Coralogix" + "[Integrations] AWS" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List the AWS resources mapped to an entity, with their type and ARN. Returns nothing when the tenant has no AWS integration.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/coralogix/configuration/{alias}": { + "/api/v1/catalog/{tagOrId}/custom-data": { "delete": { - "operationId": "CoralogixRemoveConfiguration", + "operationId": "deleteCustomDataForEntity", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "key", "required": true, "schema": { "type": "string" } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" - } - } - }, - "description": "Successfully deleted configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Successfully deleted custom data" }, "404": { "content": { @@ -8218,27 +7569,52 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a configuration", + "summary": "Delete custom data for entity", "tags": [ - "[Integrations] Coralogix" + "Custom Data" ], + "x-cortex-mcp-description": "Delete custom data from an entity. Disabled for MCP access to protect data integrity and prevent accidental removal of critical metadata", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "CoralogixGetConfiguration", + "operationId": "getCustomDataForEntity", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 } } ], @@ -8247,21 +7623,14 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CoralogixConfiguration" - } - } - }, - "description": "Successfully found configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomData" + } } } }, - "description": "Bad Request" + "description": "Successfully retrieved custom data. If using pagination, we do not return page, total, or totalPages in the response. An empty array is returned once you reach the end." }, "404": { "content": { @@ -8271,28 +7640,39 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a configuration", + "summary": "List custom data for entity", "tags": [ - "[Integrations] Coralogix" + "Custom Data" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List all custom data key-value pairs associated with an entity. Retrieve metadata, configuration settings, and custom attributes stored for services, resources, or domains. Supports pagination for entities with large amounts of custom data.", + "x-cortex-mcp-enabled": "true" }, - "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "CoralogixUpdateConfiguration", + "post": { + "operationId": "addCustomDataForEntity", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" } } ], @@ -8300,7 +7680,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CoralogixUpdateConfigurationRequest" + "$ref": "#/components/schemas/DataCreateRequest" } } }, @@ -8311,11 +7691,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" + "$ref": "#/components/schemas/CustomData" } } }, - "description": "Successfully updated configuration" + "description": "Successfully created data" }, "400": { "content": { @@ -8325,17 +7705,7 @@ } } }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Invalid custom data request" }, "404": { "content": { @@ -8345,70 +7715,55 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "Add custom data for entity", "tags": [ - "[Integrations] Coralogix" + "Custom Data" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Set one custom data key on an entity. value can be any JSON type. If the key is missing it is created; if it exists its value and description are overwritten (an upsert, so repeating the same call changes nothing). Overwriting a key that came from a different source, such as the YAML descriptor, returns 400 unless force\u003dtrue, and a forced value is replaced again the next time the descriptor is processed.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/coralogix/configurations": { - "delete": { - "operationId": "CoralogixRemoveAllConfigurations", - "responses": { - "200": { - "description": "Successfully deleted all configurations" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "/api/v1/catalog/{tagOrId}/custom-data/{key}": { + "get": { + "operationId": "getCustomDataForEntityByKey", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" + { + "in": "path", + "name": "key", + "required": true, + "schema": { + "type": "string" + } } - }, - "summary": "Delete all configurations", - "tags": [ - "[Integrations] Coralogix" ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "CoralogixListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" + "$ref": "#/components/schemas/CustomData" } } }, - "description": "Successfully found configurations" + "description": "Successfully retrieved custom data for key" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -8416,345 +7771,350 @@ } } }, - "description": "Bad Request" + "description": "Custom data not found for given entity and key" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve configurations", + "summary": "Retrieve custom data for entity by key", "tags": [ - "[Integrations] Coralogix" + "Custom Data" ], - "x-cortex-mcp-enabled": "false" - }, - "post": { - "operationId": "CoralogixSaveConfigurations", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestCoralogixConfigurationRequest" - } + "x-cortex-mcp-description": "Retrieve a specific custom data value by key for an entity. Efficiently access individual metadata attributes, configuration values, or custom properties without fetching all custom data.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/{tagOrId}/custom-events": { + "delete": { + "operationId": "deleteCustomEventsForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" } }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseCoralogixConfiguration" - } - } - }, - "description": "Successfully added configurations" + { + "in": "query", + "name": "type", + "required": false, + "schema": { + "type": "string" + } }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + { + "deprecated": true, + "description": "Use \u0027startTime\u0027 instead", + "in": "query", + "name": "timestamp", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" + { + "description": "If provided, events with greater than or equal to timestamp will be deleted (a date-time without a time-zone in the ISO-8601 calendar system)", + "in": "query", + "name": "startTime", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "If provided, events with less than or equal to timestamp will be deleted (a date-time without a time-zone in the ISO-8601 calendar system)", + "in": "query", + "name": "endTime", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } } - }, - "summary": "Add multiple configurations", - "tags": [ - "[Integrations] Coralogix" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/coralogix/default-configuration": { - "get": { - "operationId": "CoralogixGetDefaultConfiguration", "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CoralogixConfiguration" - } - } - }, - "description": "Successfully found default configuration" + "description": "Successfully deleted custom events" + }, + "204": { + "description": "No Content" }, "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, "description": "Bad Request" }, + "404": { + "description": "Entity not found" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "Delete ALL custom events for an entity", "tags": [ - "[Integrations] Coralogix" + "Custom Events" ], + "x-cortex-mcp-description": "Delete multiple custom events with filters. Disabled for MCP access to preserve event history", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/custom-integrations/data/{uuid}": { - "post": { - "description": "Refer to the [Webhook section](/docs/reference/basics/custom-data#webhook) of the Custom Data docs for more information. This API is preconfigured in your workspace settings under Custom Integrations. The UUID corresponds to a custom data key, as well as a `jq` command that maps the data in this payload to an entity in your workspace.", - "operationId": "addCustomDataViaWebhook", + }, + "get": { + "operationId": "listCustomEventsForEntity", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "uuid", + "name": "tagOrId", "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "type", + "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } + }, + { + "deprecated": true, + "description": "Use \u0027startTime\u0027 instead", + "in": "query", + "name": "timestamp", + "required": false, + "schema": { + "type": "string", + "format": "date-time" } }, - "description": "A JSON object that contains a valid entity tag in the payload, queryable with the `jq` command defined for this webhook in your workspace.", - "required": true - }, - "responses": { - "200": { - "description": "OK" + { + "description": "If provided, events with greater than or equal to timestamp will be returned (UTC, e.g. 2026-06-22T00:00:00)", + "in": "query", + "name": "startTime", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Add custom data via webhook", - "tags": [ - "Custom Data" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/datadog/configuration": { - "post": { - "operationId": "DatadogSaveConfiguration", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DatadogConfigurationRequest" - } + { + "description": "If provided, events with less than or equal to timestamp will be returned (UTC, e.g. 2026-06-22T00:00:00)", + "in": "query", + "name": "endTime", + "required": false, + "schema": { + "type": "string", + "format": "date-time" } }, - "required": true - }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" + "$ref": "#/components/schemas/CustomEventListResponse" } } }, - "description": "Successfully added configuration" + "description": "Successfully retrieved custom events" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventListResponse" } } }, "description": "Bad Request" }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Add a single configuration", - "tags": [ - "[Integrations] Datadog" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/datadog/configuration/validate": { - "post": { - "operationId": "DatadogValidateAllConfigurations", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" - } - } - }, - "description": "Successfully validated all configurations" - }, "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventListResponse" } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "List custom events for entity", "tags": [ - "[Integrations] Datadog" + "Custom Events" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/datadog/configuration/validate/{alias}": { + "x-cortex-mcp-description": "List custom events for an entity with optional filtering by type and time range. Supports pagination and filtering by event type, start time, and end time to retrieve historical event data.", + "x-cortex-mcp-enabled": "true" + }, "post": { - "operationId": "DatadogValidateConfiguration", + "operationId": "createCustomEventForEntity", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SaveCustomEventRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/CustomEventResponse" } } }, - "description": "Successfully validated configuration" + "description": "Successfully created custom event" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomEventResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventResponse" } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate a configuration", + "summary": "Create custom event for entity", "tags": [ - "[Integrations] Datadog" + "Custom Events" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Record a new custom event on an entity, with a title, type, timestamp and optional description, url and customData. Every call adds another event, so retrying creates duplicates. Returns the event with its UUID. To change an existing event, use replaceCustomEventForEntityByUuid.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/datadog/configuration/{alias}": { + "/api/v1/catalog/{tagOrId}/custom-events/{uuid}": { "delete": { - "operationId": "DatadogRemoveConfiguration", + "operationId": "deleteCustomEventForEntityByUuid", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "uuid", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" - } - } - }, - "description": "Successfully deleted configuration" + "description": "Successfully deleted custom event" + }, + "204": { + "description": "No Content" }, "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, "description": "Bad Request" }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - }, "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" + "description": "Entity or custom event not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a configuration", + "summary": "Delete custom events by UUID", "tags": [ - "[Integrations] Datadog" + "Custom Events" ], + "x-cortex-mcp-description": "Delete a specific custom event by UUID. Disabled for MCP access to preserve event history", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "DatadogGetConfiguration", + "operationId": "getCustomEventForEntityByUuid", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "uuid", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } ], @@ -8763,17 +8123,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DatadogConfiguration" + "$ref": "#/components/schemas/CustomEventResponse" } } }, - "description": "Successfully found configuration" + "description": "Successfully retrieved custom event" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventResponse" } } }, @@ -8783,32 +8143,43 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventResponse" } } }, - "description": "Configuration not found" + "description": "Entity or custom event not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a configuration", + "summary": "Retrieve custom event by UUID", "tags": [ - "[Integrations] Datadog" + "Custom Events" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Retrieve a specific custom event by its UUID. Returns event details including title, description, timestamp, type, and any custom data associated with the event.", + "x-cortex-mcp-enabled": "true" }, "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "DatadogUpdateConfiguration", + "operationId": "replaceCustomEventForEntityByUuid", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "uuid", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } ], @@ -8816,7 +8187,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DatadogUpdateConfigurationRequest" + "$ref": "#/components/schemas/SaveCustomEventRequest" } } }, @@ -8827,71 +8198,101 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" + "$ref": "#/components/schemas/CustomEventResponse" } } }, - "description": "Successfully updated configuration" + "description": "Successfully updated custom event" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventResponse" } } }, "description": "Bad Request" }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - }, "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomEventResponse" } } }, - "description": "Configuration not found" + "description": "Entity or custom event not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "Update custom event by UUID", "tags": [ - "[Integrations] Datadog" + "Custom Events" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Replace a custom event, found by its UUID, with the request body. Every field is overwritten and fields you omit are cleared, so send the full event (read it first with getCustomEventForEntityByUuid). Returns 404 if the entity or event does not exist. Does not create an event.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/datadog/configurations": { + "/api/v1/catalog/{tagOrId}/deploys": { "delete": { - "operationId": "DatadogRemoveAllConfigurations", + "operationId": "deleteDeploysForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "environment", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "sha", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "DEPLOY", + "SCALE", + "ROLLBACK", + "RESTART" + ] + } + } + ], "responses": { "200": { - "description": "Successfully deleted all configurations" - }, - "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CustomDeploy" } } }, - "description": "Bad Request" + "description": "Successfully deleted deployments" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -8899,32 +8300,67 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete all configurations", + "summary": "Delete deployments for entity", "tags": [ - "[Integrations] Datadog" + "Deploys" ], + "x-cortex-mcp-description": "Delete multiple deployments. Disabled for MCP access to preserve deployment history", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "DatadogListConfigurations", + "operationId": "getDeploysForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" + "$ref": "#/components/schemas/CustomDeployListPaginatedResponse" } } }, - "description": "Successfully found configurations" + "description": "Successfully retrieved deployments" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -8932,25 +8368,38 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve configurations", + "summary": "List deployments for entity", "tags": [ - "[Integrations] Datadog" + "Deploys" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List all deployments for a specific catalog entity. Returns deployment history including timestamps, environments, SHAs, and deployment types in paginated format.", + "x-cortex-mcp-enabled": "true" }, "post": { - "operationId": "DatadogSaveConfigurations", + "operationId": "addDeployForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestDatadogConfigurationRequest" + "$ref": "#/components/schemas/SaveDeployRequest" } } }, @@ -8961,13 +8410,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseDatadogConfiguration" + "$ref": "#/components/schemas/CustomDeploy" } } }, - "description": "Successfully added configurations" + "description": "Successfully created deployment" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -8975,34 +8424,56 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add multiple configurations", + "summary": "Add deployment for entity", "tags": [ - "[Integrations] Datadog" + "Deploys" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Record a new deployment on an entity: title, timestamp, type (DEPLOY, SCALE, ROLLBACK or RESTART), and optional sha, url, environment, deployer and customData. Every call adds another record, so retrying creates duplicates. Returns the deployment with its UUID. To correct an existing record, use updateDeployByUuid.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/datadog/default-configuration": { - "get": { - "operationId": "DatadogGetDefaultConfiguration", + "/api/v1/catalog/{tagOrId}/deploys/{uuid}": { + "delete": { + "operationId": "deleteDeployByUuid", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "uuid", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DatadogConfiguration" + "$ref": "#/components/schemas/CustomDeploy" } } }, - "description": "Successfully found default configuration" + "description": "Successfully deleted deployment" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -9010,149 +8481,91 @@ } } }, - "description": "Bad Request" + "description": "Entity or deployment not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "Delete deployment by UUID", "tags": [ - "[Integrations] Datadog" + "Deploys" ], + "x-cortex-mcp-description": "Delete a specific deployment. Disabled for MCP access to preserve deployment history", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/discovery-audit": { - "get": { - "description": "This report shows you recent changes in your environment that aren\u0027t reflected in Cortex, including newly created repositories, services, and resources that we discover from your integrations or which were deleted in the environment but corresponding Cortex entities are still present.", - "operationId": "getDiscoveryAudit", + }, + "put": { + "operationId": "updateDeployByUuid", "parameters": [ { - "description": "Filter based on type of the event", - "in": "query", - "name": "type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "NEW_REPOSITORY", - "REPOSITORY_DELETED", - "REPOSITORY_ARCHIVED", - "NEW_K8S_RESOURCE", - "NEW_APM_RESOURCE", - "APM_RESOURCE_NOT_DETECTED", - "NEW_ECS_RESOURCE", - "ECS_RESOURCE_NOT_DETECTED", - "NEW_AWS_RESOURCE", - "AWS_RESOURCE_NOT_DETECTED", - "NEW_GOOGLE_CLOUD_RESOURCE", - "GOOGLE_CLOUD_RESOURCE_NOT_DETECTED", - "NEW_AZURE_RESOURCE", - "AZURE_RESOURCE_NOT_DETECTED" - ] - } - }, - { - "description": "Filter based on integration source", - "in": "query", - "name": "source", - "required": false, - "schema": { - "type": "string", - "enum": [ - "AWS", - "AZURE_DEVOPS", - "AZURE_RESOURCES", - "BITBUCKET", - "DATADOG", - "DYNATRACE", - "ECS", - "GCP", - "GITHUB", - "GITLAB", - "INSTANA", - "K8S", - "LIGHTSTEP", - "LAMBDA", - "LAMBDA_CLOUD_CONTROL", - "NEWRELIC", - "SERVICENOW", - "SERVICENOW_DOMAIN" - ] - } - }, - { - "description": "Flag to include ignored events in result", - "in": "query", - "name": "includeIgnored", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 250 + "type": "string", + "description": "Entity identifier - can be a tag or CID" } }, { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", + "in": "path", + "name": "uuid", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string", + "format": "uuid" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SaveDeployRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DiscoveryAuditReportResponse" + "$ref": "#/components/schemas/CustomDeploy" } } }, - "description": "Successfully retrieved discovery audit report" + "description": "Successfully updated deployment" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity or deployment not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve discovery audit report", + "summary": "Update deployment by UUID", "tags": [ - "Discovery Audit" + "Deploys" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Replace a deployment record, found by its UUID, with the request body. Every field is overwritten and fields you omit are cleared, so send the full record. Returns 404 if the entity or deployment does not exist. Does not create a record.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}": { + "/api/v1/catalog/{tagOrId}/documentation/openapi": { "delete": { - "description": "Deletes custom metric data points for entity.", - "operationId": "deleteByTimeRange", + "operationId": "deleteOpenApiDocForEntity", "parameters": [ { - "description": "Key for the custom metric filter", - "in": "path", - "name": "customMetricKey", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", "name": "tagOrId", "required": true, @@ -9160,68 +8573,28 @@ "type": "string", "description": "Entity identifier - can be a tag or CID" } - }, - { - "description": "Start date for the deletion (inclusive)", - "in": "query", - "name": "startDate", - "required": true, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "End date for the deletion (inclusive)", - "in": "query", - "name": "endDate", - "required": true, - "schema": { - "type": "string", - "format": "date-time" - } } ], "responses": { "204": { - "description": "Successfully deleted data points" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Invalid filters" + "description": "Successfully deleted documentation" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete custom metrics data points", + "summary": "Delete OpenAPI docs for entity", "tags": [ - "Custom Metrics" + "Docs" ], - "x-cortex-mcp-description": "Delete custom metric data points within a time range. Disabled for MCP access to preserve metric history", + "x-cortex-mcp-description": "Cortex Entity API Docs - Read the OpenAPI document registered against an entity", "x-cortex-mcp-enabled": "false" }, "get": { - "description": "Lists all custom metrics data points for an entity", - "operationId": "getCustomMetricData", + "operationId": "getOpenApiDocForEntity", "parameters": [ { - "description": "Key for the custom metric filter", - "in": "path", - "name": "customMetricKey", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", "name": "tagOrId", "required": true, @@ -9231,45 +8604,12 @@ } }, { - "description": "Start date for the filter (inclusive). Default: 6 months", - "in": "query", - "name": "startDate", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "End date for the filter (inclusive)", + "description": "Name of the OpenAPI spec to return. If you have multiple OpenAPI specs configured for your entity as `x-cortex-links`, use this parameter to ensure the correct spec is returned. If this parameter is not specified, we will return the first OpenAPI spec found.", "in": "query", - "name": "endDate", + "name": "name", "required": false, "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } } ], @@ -9278,13 +8618,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomMetricDataResponse" + "$ref": "#/components/schemas/OpenAPISpecification" } } }, - "description": "Successfully retrieved custom metrics data points" + "description": "Successfully found documentation" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -9292,34 +8632,24 @@ } } }, - "description": "Invalid filters" + "description": "Documentation not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve custom metrics data points", + "summary": "Retrieve OpenAPI docs for entity", "tags": [ - "Custom Metrics" + "Docs" ], - "x-cortex-mcp-description": "Retrieve custom metric data points for an entity. Returns paginated time-series data for a specific custom metric, with optional filtering by date range to analyze trends and patterns", + "x-cortex-mcp-description": "Get the OpenAPI document registered against an entity - the API the service actually exposes. Distinct from the entity\u0027s Cortex descriptor, which getEntityDescriptor returns.", "x-cortex-mcp-enabled": "true" }, - "post": { - "description": "Adds a single custom metric data point for entity.", - "operationId": "createCustomMetricData", + "put": { + "operationId": "updateOpenApiDocForEntity", "parameters": [ { - "description": "Key for the custom metric filter", - "in": "path", - "name": "customMetricKey", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", "name": "tagOrId", "required": true, @@ -9333,7 +8663,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateCustomDataRequest" + "$ref": "#/components/schemas/OpenAPISpecification" } } }, @@ -9341,7 +8671,14 @@ }, "responses": { "200": { - "description": "Successfully added data point" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAPISpecification" + } + } + }, + "description": "Successfully updated documentation" }, "400": { "content": { @@ -9351,36 +8688,76 @@ } } }, - "description": "Invalid filters" + "description": "Invalid request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add custom metrics data point", + "summary": "Update OpenAPI docs for entity", "tags": [ - "Custom Metrics" + "Docs" ], - "x-cortex-mcp-description": "Add a single custom metric data point. Disabled for MCP access to prevent external systems from modifying metric data", + "x-cortex-mcp-description": "Set the OpenAPI document an entity exposes; the spec is a JSON or YAML string. It replaces any OpenAPI document previously set through the API. If the entity has none yet, one is created. Returns 400 if the spec cannot be parsed. This changes the API documentation only, not the entity\u0027s Cortex descriptor; for that, use createOrUpdateEntity or createOrPatchEntity.", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}/bulk": { - "post": { - "description": "Adds multiple custom metric data points for entity.", - "operationId": "createBulkCustomMetricData", + "/api/v1/catalog/{tagOrId}/gitops-logs": { + "get": { + "operationId": "latestGitOpsLogForEntity", "parameters": [ { - "description": "Key for the custom metric filter", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "customMetricKey", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GitOpsLogEntityResponse" + } + } + } + }, + "description": "Retrieve most recent GitOps log for entity" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity GitOps log not found" }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve most recent GitOps log for entity", + "tags": [ + "Catalog Entities" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/catalog/{tagOrId}/groups": { + "delete": { + "operationId": "deleteGroupsFromEntity", + "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", "name": "tagOrId", "required": true, @@ -9394,7 +8771,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateCustomDataBulkRequest" + "$ref": "#/components/schemas/GroupMembershipsRequest" } } }, @@ -9402,7 +8779,7 @@ }, "responses": { "200": { - "description": "Successfully added data points" + "description": "Successfully deleted group memberships" }, "400": { "content": { @@ -9412,25 +8789,42 @@ } } }, - "description": "Invalid filters" + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add custom metrics data points in bulk", + "summary": "Delete groups from entity", "tags": [ - "Custom Metrics" + "Groups" ], - "x-cortex-mcp-description": "Add multiple custom metric data points in bulk. Disabled for MCP access to prevent external systems from modifying metric data", + "x-cortex-mcp-description": "Cortex Entity Groups API - Read the groups an entity belongs to", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/eng-intel/labels": { + }, "get": { - "description": "Retrieves a list of all available user labels.\n\nAPI key must have the `View Eng Intelligence` permission.", - "operationId": "listUserLabels", + "operationId": "listGroupsForEntity", "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, { "description": "Number of results to return per page, between 1 and 1000. Default 250.", "in": "query", @@ -9459,114 +8853,52 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserLabelListResponse" + "$ref": "#/components/schemas/GroupMembershipsResponse" } } }, - "description": "Successfully retrieved user labels" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "List user labels", - "tags": [ - "Eng Intel: User Labels" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/eng-intel/labels/users": { - "post": { - "description": "Assign user label values to user emails in bulk.\n\nAPI key must have the `Edit user labels` permission.", - "operationId": "updateUserLabelAssignments", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkUserLabelAssignmentRequest" - } - } + "description": "Successfully retrieved groups" }, - "required": true - }, - "responses": { - "200": { + "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkUserLabelAssignmentResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully updated user label assignments" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update user label assignments", + "summary": "Retrieve groups for entity", "tags": [ - "Eng Intel: User Labels" + "Groups" ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/eng-intel/labels/{id}": { - "get": { - "description": "Get user label.\n\nAPI key must have the `View Eng Intelligence` permission.", - "operationId": "getUserLabel", + "x-cortex-mcp-description": "List the groups one entity belongs to. Groups are the free-form x-cortex-groups tags used to organize the catalog.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "operationId": "addGroupsToEntity", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "id", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserLabel" - } - } - }, - "description": "Successfully retrieved user label" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "User label not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve user label", - "tags": [ - "Eng Intel: User Labels" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/eng-intel/metrics/point-in-time": { - "post": { - "description": "Query current metric values with optional period comparisons and flexible grouping. Supports batch queries for multiple metrics efficiently.", - "operationId": "queryPointInTimeMetrics", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BatchPointInTimeRequest" + "$ref": "#/components/schemas/GroupMembershipsRequest" } } }, @@ -9577,68 +8909,56 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PointInTimeResponse" + "$ref": "#/components/schemas/GroupMembershipsResponse" } } }, - "description": "Successfully executed metrics query" + "description": "Successfully created group memberships" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PointInTimeResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Invalid metric names, date range exceeds 6 months, validation errors, or unsupported orderBy attributes" + "description": "Bad Request" }, - "403": { + "404": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PointInTimeResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Feature not enabled - contact help@cortex.io" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Execute point-in-time engineering metrics queries", + "summary": "Add groups to entity", "tags": [ - "Eng Intel: 2-Metrics" + "Groups" ], - "x-cortex-mcp-description": "Execute point-in-time queries for one or more engineering metrics.\n\n Returns current metric values for specified time periods, with support for batch queries\n and optional period-over-period comparisons. Time range (startTime/endTime) cannot exceed 6 months (180 days).\n\n PREREQUISITES - Follow this workflow:\n 1. Discover all available metrics ONCE: Call listMetricDefinitions (view\u003d\u0027basic\u0027) - cache this response\n 2. Get metric query metadata ONCE per metric: Call listMetricDefinitions (view\u003d\u0027full\u0027, key\u003dMETRIC_KEY)\n - supportedAggregations: Valid aggregation methods\n - orderByAttribute: Attribute path for sorting by metric values\n - groupByOptions[].key: Valid groupBy keys (use exact values, do NOT guess)\n - filterOptions[].key: Valid filter keys (use exact values, do NOT guess)\n Cache the full view response for each metric. Reuse the metadata from cached responses for subsequent queries on the same metric.\n 3. Construct query: Use the query metadata from the full view responses in step 2 to build valid point-in-time requests\n\n IMPORTANT: Cache only results from listMetricDefinitions. Do NOT cache point-in-time query results - always execute fresh queries for current data.\n Only refresh cached listMetricDefinitions responses if no longer in your context window or explicitly requested.\n Do NOT guess attribute names - always use exact values from listMetricDefinitions responses.\n\n Response includes:\n - Lightweight metadata: Column definitions optimized for programmatic use\n - Row data: Actual metric values and dimensional data\n - No heavy schemas: Source definitions excluded (get from listMetricDefinitions instead)\n\n Error responses:\n - 400: Invalid metric names, date range, validation errors, or unsupported metric combinations\n - 403: Feature not enabled (contact help@cortex.io)", - "x-cortex-mcp-enabled": "true", - "x-internal": true + "x-cortex-mcp-description": "Add one or more groups (the free-form x-cortex-groups tags) to an entity. Existing groups are kept, and a group that does not exist yet is created. Tags may use only letters, numbers and dashes. Returns all of the entity\u0027s groups after the change. Use listGroupsForEntity to read the current groups.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/eng-intel/registry/metrics/definitions": { + "/api/v1/catalog/{tagOrId}/integrations/oncall/current": { "get": { - "description": "Discover all available engineering metrics and their metadata. Use this before querying metrics to understand what data is available and how to query it effectively.", - "operationId": "listMetricDefinitions", + "operationId": "getCurrentOncallForEntity", "parameters": [ { - "in": "query", - "name": "view", - "required": false, + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, "schema": { "type": "string", - "default": "basic" - } - }, - { - "in": "query", - "name": "key", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } + "description": "Entity identifier - can be a tag or CID" } } ], @@ -9647,77 +8967,67 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MetricDefinitionsResponse" - } - } - }, - "description": "Successfully retrieved metric definitions" - }, - "400": { - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/BasicMetricDefinitionsResponse" - }, - { - "$ref": "#/components/schemas/FullMetricDefinitionsResponse" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/CurrentOncallDetails" + } } } }, - "description": "Invalid query parameters or filters" + "description": "Successfully retrieved current on-call" }, - "403": { + "404": { "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/BasicMetricDefinitionsResponse" - }, - { - "$ref": "#/components/schemas/FullMetricDefinitionsResponse" - } - ] + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Feature not enabled - contact help@cortex.io" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List available engineering metric definitions", + "summary": "Retrieve current on-call for entity", "tags": [ - "Eng Intel: 1-Registry" + "On-call" ], - "x-cortex-mcp-description": "List all available engineering metric definitions.\n\n USAGE - Call this endpoint BEFORE querying metrics (queryPointInTimeMetrics):\n 1. Once at start: Call with view\u003d\u0027basic\u0027 to discover all available metrics - cache this response\n 2. Once per metric: Call with view\u003d\u0027full\u0027 and key\u003dMETRIC_KEY to get detailed metadata - cache each response\n 3. Use cached metadata to construct valid point-in-time queries\n\n Cache responses in your context. Only refresh if no longer in your context window or explicitly requested (ex to check if metric readiness has changed).\n\n Query parameters:\n - view: \u0027basic\u0027 (default) returns minimal info, \u0027full\u0027 includes sources and query metadata\n - key: Filter metrics by key (supports multiple values and comma-separated lists)\n\n Full view provides query construction metadata:\n - supportedAggregations: Valid aggregation methods for the metric\n - orderByAttribute: Attribute path for sorting by metric values\n - groupByOptions[].key: Valid groupBy keys (use exact values, do NOT guess)\n - filterOptions[].key: Valid filter keys (use exact values, do NOT guess)\n\n Valid orderBy attributes for metric queries:\n - orderByAttribute: The metric value itself (returned in full view)\n - Source attributes: Any attribute from the metric\u0027s source (e.g., \"source_name.attribute_name\")\n - Dimension attributes: Any attribute from related dimensions (e.g., \"source_name.dimension_name.attribute_name\")\n\n Filter operators by type (for constructing queries):\n - STRING: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, LIKE, NOT_LIKE, IN, NOT_IN, ANY\n - INTEGER/DECIMAL/DOUBLE: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IN, NOT_IN, BETWEEN, ANY\n - DATETIME/DATE: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, BETWEEN\n - BOOLEAN: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, IN, NOT_IN\n - ARRAY: EQUAL, CONTAINS, IN\n\n Error responses:\n - 400: Invalid view parameter (must be \u0027basic\u0027 or \u0027full\u0027)\n - 403: Restricted Feature (contact help@cortex.io)", - "x-cortex-mcp-enabled": "true", - "x-internal": true + "x-cortex-mcp-description": "Retrieve the current on-call personnel for an entity in real-time. Shows who is actively responsible for incident response, including primary and secondary on-call, contact information, and rotation schedules.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/configurations": { - "delete": { - "operationId": "GitHubDeleteConfigurations", + "/api/v1/catalog/{tagOrId}/integrations/oncall/registration": { + "get": { + "operationId": "getOncallRegistrationForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "responses": { "200": { - "description": "Successfully deleted all configurations" - }, - "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/OncallRegistration" + } } } }, - "description": "Bad Request" + "description": "Successfully retrieved on-call registration" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -9725,32 +9035,70 @@ } } }, - "description": "Forbidden" + "description": "Entity or registration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete all configurations", + "summary": "Retrieve on-call registration for entity", "tags": [ - "[Integrations] GitHub" + "On-call" ], + "x-cortex-mcp-description": "Get the on-call registration details for an entity, including the escalation policy, service mapping, and provider information. Disabled for MCP access to protect sensitive on-call information", "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/catalog/{tagOrId}/k8s": { "get": { - "operationId": "GitHubListConfigurations", + "description": "\n Returns cached Kubernetes resource details for the specified entity.\n This endpoint serves cached data only and does not make live Kubernetes API calls.\n ", + "operationId": "KubernetesGetK8sResourcesForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AllGithubConfigurationResponse" + "$ref": "#/components/schemas/K8sCatalogResponse" } } }, - "description": "Successfully found configurations" + "description": "Successfully retrieved Kubernetes resource details" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -9758,54 +9106,63 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve configurations", + "summary": "Get Kubernetes resource details for an entity", "tags": [ - "[Integrations] GitHub" + "[Integrations] Kubernetes" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List the Kubernetes resources mapped to an entity - deployments, statefulsets, cronjobs and the like, with their current replica and pod state. Returns nothing when the tenant has no Kubernetes integration.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/configurations/app": { - "post": { - "operationId": "GitHubSaveGithubApp", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GithubAppRequest" - } + "/api/v1/catalog/{tagOrId}/openapi": { + "get": { + "description": "Retrieve entity descriptor\n\nThe descriptor does not include objects (e.g. custom data, dependencies, etc) defined via the API", + "operationId": "getEntityDescriptor", + "parameters": [ + { + "description": "When true, returns the YAML representation of the descriptor", + "in": "query", + "name": "yaml", + "schema": { + "type": "boolean" } }, - "required": true - }, + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse.APP" - } - } - }, - "description": "Successfully added configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/JsonNode" + } + ] } } }, - "description": "Bad Request" + "description": "Successfully found entity descriptor" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -9813,55 +9170,48 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single app configuration", + "summary": "Retrieve entity descriptor", "tags": [ - "[Integrations] GitHub" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Retrieve an entity\u0027s Cortex descriptor - the x-cortex-* configuration the entity is defined by. Returns JSON by default; pass yaml\u003dtrue for the YAML form. Distinct from getOpenApiDocForEntity, which returns the API the service exposes.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/configurations/app/{alias}": { - "delete": { - "operationId": "GitHubRemoveGithubApp", + "/api/v1/catalog/{tagOrId}/packages": { + "get": { + "operationId": "listPackages", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], "responses": { "200": { - "description": "Successfully deleted configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Forbidden" + "description": "All packages. If using pagination, we do not return page, total, or totalPages in the response. An empty array is returned once you reach the end." }, "404": { "content": { @@ -9871,24 +9221,36 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a single app configuration", + "summary": "List packages", "tags": [ - "[Integrations] GitHub" + "Packages" ], "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "GitHubGetGithubApp", + } + }, + "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget": { + "delete": { + "operationId": "deleteNugetPackage", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "name", "required": true, "schema": { "type": "string" @@ -9897,34 +9259,7 @@ ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse.APP" - } - } - }, - "description": "Successfully found configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Successfully deleted package" }, "404": { "content": { @@ -9934,50 +9269,67 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a single app configuration", + "summary": "[csharp] Delete Nuget package", "tags": [ - "[Integrations] GitHub" + "Packages" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "GitHubEditGithubApp", + } + }, + "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget/csproj": { + "post": { + "operationId": "uploadNugetCsproj", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], "requestBody": { "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/EditPersonalConfigurationRequest" + "type": "string" } } }, + "description": "Stringified version of your *.csproj file", "required": true }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NUGET", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse.APP" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Successfully updated configuration" + "description": "Successfully saved packages" }, "400": { "content": { @@ -9987,17 +9339,7 @@ } } }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Unsupported csproj format, e.g. a .NET Framework project that declares dependencies with \u003cReference\u003e elements" }, "404": { "content": { @@ -10007,54 +9349,70 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a single app configuration", + "summary": "[csharp] Upload Nuget csproj", "tags": [ - "[Integrations] GitHub" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a .NET *.csproj for an entity (body: raw XML text). Reads `\u003cPackageReference\u003e` elements and REPLACES all of the entity\u0027s NuGet packages, including those from packages.config or packages.lock.json uploads. Fails with 400 for .NET Framework projects that use only `\u003cReference\u003e`; use uploadNugetPackagesConfig for those.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/configurations/personal": { + "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget/packages-config": { "post": { - "operationId": "GitHubSavePersonalConfiguration", + "operationId": "uploadNugetPackagesConfig", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "requestBody": { "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/DecryptedPersonalAccessToken" + "type": "string" } } }, + "description": "Stringified version of your packages.config file", "required": true }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NUGET", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN" - } - } - }, - "description": "Successfully added configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Bad Request" + "description": "Successfully saved packages" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -10062,55 +9420,68 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single personal configuration", + "summary": "[csharp] Upload Nuget packages.config", "tags": [ - "[Integrations] GitHub" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a .NET packages.config for an entity (body: raw XML text; the format older .NET Framework projects use). REPLACES all of the entity\u0027s NuGet packages, including those from csproj or packages.lock.json uploads.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/configurations/personal/{alias}": { - "delete": { - "operationId": "GitHubRemovePersonalConfiguration", + "/api/v1/catalog/{tagOrId}/packages/dotnet/nuget/packages-lock": { + "post": { + "operationId": "uploadNugetPackagesLock", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], - "responses": { - "200": { - "description": "Successfully deleted configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" } - }, - "description": "Bad Request" + } }, - "403": { + "description": "Stringified version of your nuget package.lock.json file", + "required": true + }, + "responses": { + "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NUGET", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Forbidden" + "description": "Successfully saved packages" }, "404": { "content": { @@ -10120,24 +9491,37 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a personal configuration", + "summary": "[csharp] Upload Nuget packages.lock.json", "tags": [ - "[Integrations] GitHub" + "Packages" ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "GitHubGetPersonalConfiguration", + "x-cortex-mcp-description": "Upload a NuGet packages.lock.json for an entity (body: raw JSON text). Reads the resolved versions of the first target framework and REPLACES all of the entity\u0027s NuGet packages, including those from csproj or packages.config uploads.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/{tagOrId}/packages/go": { + "delete": { + "operationId": "deleteGoPackage", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "name", "required": true, "schema": { "type": "string" @@ -10146,34 +9530,7 @@ ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN" - } - } - }, - "description": "Successfully found configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Successfully deleted package" }, "404": { "content": { @@ -10183,27 +9540,31 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a single personal configuration", + "summary": "[go] Delete Go package", "tags": [ - "[Integrations] GitHub" + "Packages" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "GitHubEditPersonalConfiguration", + } + }, + "/api/v1/catalog/{tagOrId}/packages/go/gosum": { + "post": { + "operationId": "uploadGoSumPackage", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], @@ -10211,42 +9572,35 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EditPersonalConfigurationRequest" + "type": "string" } } }, + "description": "Stringified version of your go.sum file", "required": true }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "GO", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN" - } - } - }, - "description": "Successfully updated configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Forbidden" + "description": "Successfully saved packages" }, "404": { "content": { @@ -10256,32 +9610,46 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a single personal configuration", + "summary": "[golang] Upload go.sum", "tags": [ - "[Integrations] GitHub" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a Go go.sum for an entity (body: raw file text). Keeps the highest version of each module and REPLACES all of the entity\u0027s Go packages.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/configurations/validate": { - "post": { - "operationId": "GitHubValidateAllConfigurations", + "/api/v1/catalog/{tagOrId}/packages/java": { + "delete": { + "operationId": "deleteJavaPackage", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "name", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" - } - } - }, - "description": "Successfully validated all configurations" + "description": "Successfully deleted package" }, "404": { "content": { @@ -10291,42 +9659,59 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "[java] Delete Java package", "tags": [ - "[Integrations] GitHub" + "Packages" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/github/configurations/validate/{alias}": { + }, "post": { - "operationId": "GitHubValidateConfiguration", + "operationId": "uploadJavaPackage", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PackageVersionRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { + "example": { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "JAVA", + "version": "string" + }, "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/Package" } } }, - "description": "Successfully validated configuration" + "description": "Successfully saved package" }, "404": { "content": { @@ -10336,34 +9721,72 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate a configuration", + "summary": "[java] Upload single Java package", "tags": [ - "[Integrations] GitHub" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Add or update a single Java package on an entity (JSON body: `{name, version}`, e.g. `com.google.guava:guava`). Upserts by name: it overwrites any existing Java package with that name, including one parsed from a pom.xml, and leaves all other packages alone. To sync a whole pom.xml, use uploadMavenPom.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/github/default-configuration": { - "get": { - "operationId": "GitHubGetDefaultConfiguration", + "/api/v1/catalog/{tagOrId}/packages/java/bulk": { + "post": { + "operationId": "uploadJavaPackages", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PackageVersionRequest" + } + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "JAVA", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/GithubConfigurationResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Successfully found default configuration" + "description": "Successfully saved packages" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -10371,54 +9794,69 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "[java] Upload multiple Java packages", "tags": [ - "[Integrations] GitHub" + "Packages" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/gitlab/configuration": { + "/api/v1/catalog/{tagOrId}/packages/java/maven-pom": { "post": { - "operationId": "GitLabSaveConfiguration", + "operationId": "uploadMavenPom", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GitlabConfigurationRequest" + "type": "string" } } }, + "description": "Stringified version of your pom.xml file", "required": true }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "JAVA", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" - } - } - }, - "description": "Successfully added configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Bad Request" + "description": "Successfully saved packages" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -10426,32 +9864,46 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "[java] Upload maven pom.xml", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a Maven pom.xml for an entity (body: raw XML text). REPLACES the Java packages that came from earlier pom uploads but keeps packages added one at a time with uploadJavaPackage.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/gitlab/configuration/validate": { - "post": { - "operationId": "GitLabValidateAllConfigurations", + "/api/v1/catalog/{tagOrId}/packages/node": { + "delete": { + "operationId": "deleteNodePackage", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "query", + "name": "name", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" - } - } - }, - "description": "Successfully validated all configurations" + "description": "Successfully deleted package" }, "404": { "content": { @@ -10461,42 +9913,67 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "[node] Delete Node package", "tags": [ - "[Integrations] GitLab" + "Packages" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/gitlab/configuration/validate/{alias}": { + "/api/v1/catalog/{tagOrId}/packages/node/package-json": { "post": { - "operationId": "GitLabValidateConfiguration", + "operationId": "uploadNpmPackageJson", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + }, + "description": "Stringified version of your package.json", + "required": true + }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NODE", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Successfully validated configuration" + "description": "Successfully saved packages" }, "404": { "content": { @@ -10506,62 +9983,68 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate a configuration", + "summary": "[js] Upload NPM/Yarn/PNPM package.json", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a package.json for an entity (body: raw file text). Parses only `dependencies` (not devDependencies) and REPLACES all of the entity\u0027s Node packages, including those from package-lock.json, yarn.lock or pnpm-lock.yaml uploads. Prefer a lockfile tool (uploadNpmPackageLockJson, uploadYarnLock, uploadPnpmLock) for resolved versions.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/gitlab/configuration/{alias}": { - "delete": { - "operationId": "GitLabRemoveConfiguration", + "/api/v1/catalog/{tagOrId}/packages/node/package-lock": { + "post": { + "operationId": "uploadNpmPackageLockJson", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + }, + "description": "Stringified version of your NPM package-lock.json", + "required": true + }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NODE", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Successfully deleted configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "description": "Successfully saved packages" }, "404": { "content": { @@ -10571,50 +10054,68 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a configuration", + "summary": "[js] Upload NPM package-lock.json", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "GitLabGetConfiguration", + "x-cortex-mcp-description": "Upload an npm package-lock.json for an entity (body: raw file text; lockfile v1-v3). REPLACES all of the entity\u0027s Node packages, including those from package.json, yarn.lock or pnpm-lock.yaml uploads, with the resolved versions. Invalid JSON returns an empty list and changes nothing.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/{tagOrId}/packages/node/pnpm-lock": { + "post": { + "operationId": "uploadPnpmLock", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GitlabConfiguration" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" } - }, - "description": "Successfully found configuration" + } }, - "400": { + "description": "Stringified version of your pnpm-lock.yaml file; supported version 6 or higher", + "required": true + }, + "responses": { + "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NODE", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Bad Request" + "description": "Successfully saved packages" }, "404": { "content": { @@ -10624,28 +10125,32 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a configuration", + "summary": "[js] Upload pnpm-lock.yaml", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "GitLabUpdateConfiguration", + "x-cortex-mcp-description": "Upload a pnpm-lock.yaml for an entity (body: raw YAML text; lockfile version 6 or higher). REPLACES all of the entity\u0027s Node packages, including those from package.json, package-lock.json or yarn.lock uploads, with the resolved versions.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/{tagOrId}/packages/node/yarn-lock": { + "post": { + "operationId": "uploadYarnLock", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], @@ -10653,42 +10158,35 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GitlabUpdateConfigurationRequest" + "type": "string" } } }, + "description": "Stringified version of your yarn.lock file", "required": true }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "NODE", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" - } - } - }, - "description": "Successfully updated configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Forbidden" + "description": "Successfully saved packages" }, "404": { "content": { @@ -10698,70 +10196,48 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "[js] Upload yarn.lock", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a yarn.lock for an entity (body: raw file text). REPLACES all of the entity\u0027s Node packages, including those from package.json, package-lock.json or pnpm-lock.yaml uploads, with the resolved versions.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/gitlab/configurations": { + "/api/v1/catalog/{tagOrId}/packages/python": { "delete": { - "operationId": "GitLabRemoveAllConfigurations", - "responses": { - "200": { - "description": "Successfully deleted all configurations" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" + "operationId": "deletePythonPackage", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" + { + "in": "query", + "name": "name", + "required": true, + "schema": { + "type": "string" + } } - }, - "summary": "Delete all configurations", - "tags": [ - "[Integrations] GitLab" ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "GitLabListConfigurations", "responses": { "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" - } - } - }, - "description": "Successfully found configurations" + "description": "Successfully deleted package" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -10769,42 +10245,69 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve configurations", + "summary": "[python] Delete Python package", "tags": [ - "[Integrations] GitLab" + "Packages" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/catalog/{tagOrId}/packages/python/pipfile": { "post": { - "operationId": "GitLabSaveConfigurations", + "operationId": "uploadPipfileLock", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestGitlabConfigurationRequest" + "type": "string" } } }, + "description": "Stringified version of your Pipfile.lock file", "required": true }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "PYTHON", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseGitlabConfiguration" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Successfully added configurations" + "description": "Successfully saved packages" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -10812,34 +10315,70 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add multiple configurations", + "summary": "[python] Upload pipfile.lock", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a Python Pipfile.lock for an entity (body: raw JSON text). Reads only the `default` section, plus a `python` package from `_meta.requires.python_version`, and REPLACES all of the entity\u0027s Python packages, including those from a requirements.txt upload. Invalid JSON returns an empty list and changes nothing.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/gitlab/default-configuration": { - "get": { - "operationId": "GitLabGetDefaultConfiguration", + "/api/v1/catalog/{tagOrId}/packages/python/requirements": { + "post": { + "operationId": "uploadRequirementsTxt", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + }, + "description": "Stringified version of your requirements.txt file", + "required": true + }, "responses": { "200": { "content": { "application/json": { + "example": [ + { + "dateCreated": "2023-01-01T01:01:01.000Z", + "id": 0, + "name": "string", + "packageType": "PYTHON", + "version": "string" + } + ], "schema": { - "$ref": "#/components/schemas/GitlabConfiguration" + "type": "array", + "items": { + "$ref": "#/components/schemas/Package" + } } } }, - "description": "Successfully found default configuration" + "description": "Successfully saved packages" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -10847,162 +10386,134 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "[python] Upload requirements.txt", "tags": [ - "[Integrations] GitLab" + "Packages" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Upload a Python requirements.txt for an entity (body: raw file text). REPLACES all of the entity\u0027s Python packages, including those from a Pipfile.lock upload. Requirements with no version specifier are skipped.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/gitops-logs": { + "/api/v1/catalog/{tagOrId}/relationships/{relationshipTypeTag}/destinations": { "get": { - "description": "API key must have the `View GitOps logs` permission.", - "operationId": "listGitOpsLogs", + "description": "List all entity destinations for a certain relationship type. Optional depth parameter to limit the depth of the relationship tree.", + "operationId": "listEntityDestinationsForRelationshipType", "parameters": [ { - "description": "File name the within repository", - "in": "query", - "name": "file", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } }, { - "description": "Repository name as defined in your Git provider", - "in": "query", - "name": "repository", - "required": false, + "in": "path", + "name": "relationshipTypeTag", + "required": true, "schema": { "type": "string" } }, { - "description": "Commit SHA", + "description": "Maximum depth to traverse in the relationship hierarchy. Defaults to 1 (i.e., direct relationships only).", + "example": 2, "in": "query", - "name": "sha", + "name": "depth", "required": false, "schema": { "type": "string" } }, { - "description": "Filter by error only", - "in": "query", - "name": "errorOnly", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by operation", + "description": "If true will include relationships that traverse archived entities", + "example": false, "in": "query", - "name": "operation", + "name": "includeArchived", "required": false, "schema": { - "type": "string", - "enum": [ - "CREATED", - "UPDATED", - "ARCHIVED", - "NO_CHANGE" - ] + "type": "boolean", + "default": false } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityDestinationsResponse" + } + } + }, + "description": "Successfully retrieved entity sources" }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity or relationship type not found" }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List entity destinations for a relationship type", + "tags": [ + "Entity Relationships" + ], + "x-cortex-mcp-description": "List all destinations for a certain relationship type and entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Add direct destinations for a given entity and entity relationship type", + "operationId": "addEntityDestinations", + "parameters": [ { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "in": "query", - "name": "fileName", - "required": false, - "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } }, { - "description": "Unique tag for the Scorecard.", - "in": "query", - "name": "scorecardTag", + "in": "path", + "name": "relationshipTypeTag", "required": true, "schema": { "type": "string" } }, { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", "in": "query", - "name": "workflowTag", + "name": "force", "required": false, "schema": { - "type": "string" - } - }, - { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "query", - "name": "tag", - "required": true, - "schema": { - "type": "string", - "description": "The entity tag (`x-cortex-tag`) that identifies the entity." + "type": "boolean" } } ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GitOpsLogPaginatedResponse" - } - } - }, - "description": "Retrieve GitOps logs based on given criteria" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve GitOps logs", - "tags": [ - "GitOps Logs" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/incidentio/configuration": { - "post": { - "operationId": "IncidentIoSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IncidentIoConfigurationRequest" + "$ref": "#/components/schemas/UpdateEntityRelationshipDestinations" } } }, @@ -11013,11 +10524,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + "$ref": "#/components/schemas/EntityDestinationsResponse" } } }, - "description": "Successfully added configuration" + "description": "Successfully added entity destinations" }, "400": { "content": { @@ -11027,9 +10538,9 @@ } } }, - "description": "Bad Request" + "description": "Relationship validation error" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -11037,77 +10548,81 @@ } } }, - "description": "Forbidden" + "description": "Entity or relationship type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "Add direct entity destinations for a given entity", "tags": [ - "[Integrations] Incident.io" + "Entity Relationships" ], + "x-cortex-mcp-description": "Add destination entities, given by tag, to an entity for one relationship type. Destinations the entity already has are kept, and adding one that already exists changes nothing. To replace the whole list of destinations, use updateEntityDestinations. Pass force\u003dtrue to override relationships defined in the catalog descriptor; the next descriptor sync will overwrite them again.", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/incidentio/configuration/validate": { - "post": { - "operationId": "IncidentIoValidateAllConfigurations", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" - } - } - }, - "description": "Successfully validated all configurations" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Validate all configurations", - "tags": [ - "[Integrations] Incident.io" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/incidentio/configuration/validate/{alias}": { - "post": { - "operationId": "IncidentIoValidateConfiguration", + }, + "put": { + "description": "Update all direct destinations for a given entity and entity relationship type", + "operationId": "updateEntityDestinations", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "relationshipTypeTag", "required": true, "schema": { "type": "string" } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateEntityRelationshipDestinations" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/EntityDestinationsResponse" } } }, - "description": "Successfully validated configuration" + "description": "Successfully updated entity destinations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Relationship validation error" }, "404": { "content": { @@ -11117,30 +10632,63 @@ } } }, - "description": "Configuration not found" + "description": "Entity or relationship type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate a configuration", + "summary": "Update direct entity destinations for a given entity", "tags": [ - "[Integrations] Incident.io" + "Entity Relationships" ], + "x-cortex-mcp-description": "Replace the direct destinations of an entity for one relationship type, given as entity tags. Existing destinations that are not in the list are removed, so an empty list removes them all. To add destinations without removing any, use addEntityDestinations. Pass force\u003dtrue to override relationships defined in the catalog descriptor; the next descriptor sync will overwrite them again.", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/incidentio/configuration/{alias}": { - "delete": { - "operationId": "IncidentIoRemoveConfiguration", + "/api/v1/catalog/{tagOrId}/relationships/{relationshipTypeTag}/sources": { + "get": { + "description": "List all entity sources for a certain relationship type. Optional depth parameter to limit the depth of the relationship tree.", + "operationId": "listEntitySourcesForRelationshipType", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "relationshipTypeTag", "required": true, "schema": { "type": "string" } + }, + { + "description": "Maximum depth to traverse in the relationship hierarchy. Defaults to 1 (i.e., direct relationships only).", + "example": 2, + "in": "query", + "name": "depth", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "If true will include relationships that traverse archived entities", + "example": false, + "in": "query", + "name": "includeArchived", + "required": false, + "schema": { + "type": "boolean", + "default": false + } } ], "responses": { @@ -11148,31 +10696,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" - } - } - }, - "description": "Successfully deleted configuration" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/EntitySourcesResponse" } } }, - "description": "Forbidden" + "description": "Successfully retrieved entity sources" }, "404": { "content": { @@ -11182,40 +10710,71 @@ } } }, - "description": "Configuration not found" + "description": "Entity or relationship type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a configuration", + "summary": "List entity sources for a relationship type", "tags": [ - "[Integrations] Incident.io" + "Entity Relationships" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List all sources for a certain relationship type and entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.", + "x-cortex-mcp-enabled": "true" }, - "get": { - "operationId": "IncidentIoGetConfiguration", + "post": { + "description": "Add direct sources for a given entity and entity relationship type", + "operationId": "addEntitySources", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "relationshipTypeTag", "required": true, "schema": { "type": "string" } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateEntityRelationshipSources" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IncidentIoConfiguration" + "$ref": "#/components/schemas/EntitySourcesResponse" } } }, - "description": "Successfully found configuration" + "description": "Successfully added entity sources" }, "400": { "content": { @@ -11225,7 +10784,7 @@ } } }, - "description": "Bad Request" + "description": "Relationship validation error" }, "404": { "content": { @@ -11235,36 +10794,56 @@ } } }, - "description": "Configuration not found" + "description": "Entity or relationship type not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve a configuration", + "summary": "Add direct entity sources for a given entity", "tags": [ - "[Integrations] Incident.io" + "Entity Relationships" ], + "x-cortex-mcp-description": "Add source entities, given by tag, to an entity for one relationship type. Sources the entity already has are kept, and adding one that already exists changes nothing. To replace the whole list of sources, use updateEntitySources. Pass force\u003dtrue to override relationships defined in the catalog descriptor; the next descriptor sync will overwrite them again.", "x-cortex-mcp-enabled": "false" }, "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "IncidentIoUpdateConfiguration", + "description": "Update all direct sources for a given entity and entity relationship type", + "operationId": "updateEntitySources", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "alias", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "in": "path", + "name": "relationshipTypeTag", "required": true, "schema": { "type": "string" } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IncidentIoUpdateConfigurationRequest" + "$ref": "#/components/schemas/UpdateEntityRelationshipSources" } } }, @@ -11275,11 +10854,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + "$ref": "#/components/schemas/EntitySourcesResponse" } } }, - "description": "Successfully updated configuration" + "description": "Successfully updated entity sources" }, "400": { "content": { @@ -11289,9 +10868,9 @@ } } }, - "description": "Bad Request" + "description": "Relationship validation error" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -11299,7 +10878,48 @@ } } }, - "description": "Forbidden" + "description": "Entity or relationship type not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update direct entity sources for a given entity", + "tags": [ + "Entity Relationships" + ], + "x-cortex-mcp-description": "Replace the direct sources of an entity for one relationship type, given as entity tags. Existing sources that are not in the list are removed, so an empty list removes them all. To add sources without removing any, use addEntitySources. Pass force\u003dtrue to override relationships defined in the catalog descriptor; the next descriptor sync will overwrite them again.", + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/catalog/{tagOrId}/scorecards": { + "get": { + "operationId": "listScorecardScoresForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScorecardScore" + } + } + } + }, + "description": "All entity Scorecard scores" }, "404": { "content": { @@ -11309,37 +10929,47 @@ } } }, - "description": "Configuration not found" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "Retrieve entity Scorecard scores", "tags": [ - "[Integrations] Incident.io" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List every scorecard that evaluates one entity, with that entity\u0027s score and rule outcomes on each. This is the per-entity view; use listScorecardScores to read one scorecard across many entities.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/incidentio/configurations": { - "delete": { - "operationId": "IncidentIoRemoveAllConfigurations", + "/api/v1/catalog/{tagOrId}/unarchive": { + "put": { + "operationId": "unarchiveEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], "responses": { "200": { - "description": "Successfully deleted all configurations" - }, - "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/DetailsResponse" } } }, - "description": "Bad Request" + "description": "Successfully unarchived entity" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -11347,32 +10977,80 @@ } } }, - "description": "Forbidden" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete all configurations", + "summary": "Unarchive an entity", "tags": [ - "[Integrations] Incident.io" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" - }, + "x-cortex-mcp-description": "Restore an archived entity by tag or CID so it shows in the catalog again. Unarchiving an entity that is not archived changes nothing. Returns the entity\u0027s full details, and 404 if the entity is not found.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/{tagOrId}/verifications": { "get": { - "operationId": "IncidentIoListConfigurations", + "description": "Returns one entry per verification period the entity is in scope for, including periods the entity has not been verified for yet.", + "operationId": "listVerificationsForEntity", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Return only verifications whose period is open today (true) or only those whose period is not (false). Omit for all periods.", + "example": true, + "in": "query", + "name": "isActive", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + "$ref": "#/components/schemas/ListEntityVerifications" } } }, - "description": "Successfully found configurations" + "description": "All verifications for the entity" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -11380,25 +11058,51 @@ } } }, - "description": "Bad Request" + "description": "Entity not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve configurations", + "summary": "Retrieve entity verifications", "tags": [ - "[Integrations] Incident.io" + "Catalog Entities" + ], + "x-cortex-mcp-description": "List the verifications for a single entity, one entry per verification period the entity is in scope for, including periods it has not been verified for yet. Use this to check whether one service, resource, or domain is up to date on its verifications.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/catalog/{tagOrId}/verifications/{periodCid}": { + "put": { + "description": "Records the caller\u0027s answer for one entity in one verification period. The period must be open, and the caller must own the entity -- unless it is a global API key granted the \"Verify any entity\" permission, for which ownership is waived.", + "operationId": "verifyEntityForPeriod", + "parameters": [ + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "The CID of the verification period", + "example": "vp0a1b2c3d4e5f6789", + "in": "path", + "name": "periodCid", + "required": true, + "schema": { + "type": "string" + } + } ], - "x-cortex-mcp-enabled": "false" - }, - "post": { - "operationId": "IncidentIoSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestIncidentIoConfigurationRequest" + "$ref": "#/components/schemas/VerifyEntityRequest" } } }, @@ -11409,11 +11113,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseIncidentIoConfiguration" + "$ref": "#/components/schemas/EntityVerification" } } }, - "description": "Successfully added configurations" + "description": "The recorded verification" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "The period is not currently open, the status is PENDING, or a reason is required and missing" }, "403": { "content": { @@ -11423,32 +11137,53 @@ } } }, - "description": "Forbidden" + "description": "The caller does not own the entity, lacks a role the period requires, or authenticated with a key that has no user" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "No such entity or period, or the entity is not in the period\u0027s scope" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add multiple configurations", + "summary": "Verify an entity for a verification period", "tags": [ - "[Integrations] Incident.io" + "Catalog Entities" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Record the caller\u0027s verification answer for one entity in one verification period (by entity tag or ID and periodCid). status is VERIFIED_CORRECT or VERIFIED_INCORRECT; PENDING is rejected. A reason is required for VERIFIED_INCORRECT when the period sets reasonRequired. The period must be open, and the caller must own the entity and hold any roles the period requires. Use listVerificationPeriods to find the periodCid.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/incidentio/default-configuration": { - "get": { - "operationId": "IncidentIoGetDefaultConfiguration", + "/api/v1/checkmarx/sast/configuration": { + "post": { + "operationId": "CheckmarxSASTSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckmarxSastConfigurationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IncidentIoConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCheckmarxSastConfigurationResponse" } } }, - "description": "Successfully found default configuration" + "description": "Successfully added configuration" }, "400": { "content": { @@ -11460,95 +11195,33 @@ }, "description": "Bad Request" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve default configuration", - "tags": [ - "[Integrations] Incident.io" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/initiatives": { - "get": { - "description": "Retrieves a list of Initiatives.\n\nAPI key must have the `View Initiatives` permission.", - "operationId": "listInitiatives", - "parameters": [ - { - "description": "Whether or not to include draft Initiatives in the response", - "in": "query", - "name": "includeDrafts", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Whether or not to include expired Initiatives in the response", - "in": "query", - "name": "includeExpired", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], - "responses": { - "200": { + "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InitiativeListResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully retrieved Initiatives" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List Initiatives", + "summary": "Add a configuration", "tags": [ - "Initiatives" + "[Integrations] Checkmarx SAST" ], - "x-cortex-mcp-description": "List all initiatives in the organization with optional filters for draft and expired initiatives. View active improvement programs, strategic projects, and their current status to understand organizational priorities and track progress", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" }, - "post": { - "description": "Create an Initiative.\n\nAPI key must have the `Edit Initiative` permission.", - "operationId": "createInitiative", + "put": { + "operationId": "CheckmarxSASTReplaceConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InitiativeRequest" + "$ref": "#/components/schemas/CheckmarxSastConfigurationRequest" } } }, @@ -11559,11 +11232,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Initiative" + "$ref": "#/components/schemas/ConfigurationsResponseCheckmarxSastConfigurationResponse" } } }, - "description": "Successfully created Initiative" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -11575,36 +11248,7 @@ }, "description": "Bad Request" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Create an Initiative", - "tags": [ - "Initiatives" - ], - "x-cortex-mcp-description": "Create a new initiative. Disabled for MCP access as initiative creation requires careful planning and governance approval", - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/initiatives/{cid}": { - "delete": { - "operationId": "deleteInitiative", - "parameters": [ - { - "in": "path", - "name": "cid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successfully deleted Initiative" - }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -11612,42 +11256,32 @@ } } }, - "description": "Initiative not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete Initiative", + "summary": "Update the existing configuration", "tags": [ - "Initiatives" + "[Integrations] Checkmarx SAST" ], - "x-cortex-mcp-description": "Delete an initiative. Disabled for MCP access to preserve historical tracking and prevent loss of progress data", "x-cortex-mcp-enabled": "false" - }, - "get": { - "description": "Get Initiative.\n\nAPI key must have the `View Initiatives` permission.", - "operationId": "getInitiative", - "parameters": [ - { - "in": "path", - "name": "cid", - "required": true, - "schema": { - "type": "string" - } - } - ], + } + }, + "/api/v1/checkmarx/sast/configuration/validate": { + "post": { + "operationId": "CheckmarxSASTValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Initiative" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully retrieved Initiative" + "description": "Successfully validated configuration" }, "404": { "content": { @@ -11657,52 +11291,32 @@ } } }, - "description": "Initiative not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get Initiative", + "summary": "Validate a configuration", "tags": [ - "Initiatives" - ], - "x-cortex-mcp-description": "Retrieve detailed information about a specific initiative including its goals, timeline, affected entities, scorecard targets, and current progress. Essential for understanding initiative scope and tracking achievement of objectives", - "x-cortex-mcp-enabled": "true" - }, - "put": { - "description": "Update an Initiative.\n\nAPI key must have the `Edit Initiative` permission.", - "operationId": "updateInitiative", - "parameters": [ - { - "in": "path", - "name": "cid", - "required": true, - "schema": { - "type": "string" - } - } + "[Integrations] Checkmarx SAST" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InitiativeRequest" - } - } - }, - "required": true - }, + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/checkmarx/sast/configurations": { + "delete": { + "operationId": "CheckmarxSASTDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Initiative" + "$ref": "#/components/schemas/ConfigurationsResponseCheckmarxSastConfigurationResponse" } } }, - "description": "Successfully updated Initiative" + "description": "Successfully deleted configuration" }, "400": { "content": { @@ -11714,7 +11328,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -11722,101 +11336,32 @@ } } }, - "description": "Initiative not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update an Initiative", + "summary": "Delete a configuration", "tags": [ - "Initiatives" + "[Integrations] Checkmarx SAST" ], - "x-cortex-mcp-description": "Update an existing initiative. Disabled for MCP access as modifying initiatives can impact organizational priorities and resource allocation", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/ip-allowlist": { + "/api/v1/checkmarx/sast/default-configuration": { "get": { - "operationId": "listAllowedIpAddresses", - "parameters": [ - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "operationId": "CheckmarxSASTGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IpAllowlistResponse" + "$ref": "#/components/schemas/CheckmarxSastConfigurationResponse" } } }, - "description": "Successfully retrieved IP allowlist" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Gets allowlist of IP addresses \u0026 ranges", - "tags": [ - "IP Allowlist" - ], - "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "upsertAllowedIpAddresses", - "parameters": [ - { - "description": "When true, entries will be updated even if the list doesn\u0027t contain the requestor\u0027s IP address", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IpAllowlistRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IpAllowlistResponse" - } - } - }, - "description": "Successfully replaced allowlist" + "description": "Successfully found configuration" }, "400": { "content": { @@ -11828,67 +11373,35 @@ }, "description": "Bad Request" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Replace existing allowlist with provided list of IP addresses \u0026 ranges", - "tags": [ - "IP Allowlist" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/ip-allowlist/validate": { - "post": { - "operationId": "validateAllowedIpAddresses", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IpAllowlistRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { + "404": { "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/ValidIpAllowlistEntry" - }, - { - "$ref": "#/components/schemas/InvalidIpAllowlistEntry" - } - ] + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully validated allowlist" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validates allowlist of IP addresses \u0026 ranges", + "summary": "Retrieve a configuration", "tags": [ - "IP Allowlist" + "[Integrations] Checkmarx SAST" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/launchdarkly/configuration": { + "/api/v1/circleci/configuration": { "post": { - "operationId": "LaunchDarklySaveConfiguration", + "operationId": "CircleCISaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LaunchDarklyConfigurationRequest" + "$ref": "#/components/schemas/CircleCiConfigurationRequest" } } }, @@ -11899,7 +11412,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" } } }, @@ -11931,14 +11444,14 @@ }, "summary": "Add a single configuration", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/launchdarkly/configuration/validate": { + "/api/v1/circleci/configuration/validate": { "post": { - "operationId": "LaunchDarklyValidateAllConfigurations", + "operationId": "CircleCIValidateAllConfigurations", "responses": { "200": { "content": { @@ -11966,14 +11479,14 @@ }, "summary": "Validate all configurations", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/launchdarkly/configuration/validate/{alias}": { + "/api/v1/circleci/configuration/validate/{alias}": { "post": { - "operationId": "LaunchDarklyValidateConfiguration", + "operationId": "CircleCIValidateConfiguration", "parameters": [ { "in": "path", @@ -12011,14 +11524,14 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/launchdarkly/configuration/{alias}": { + "/api/v1/circleci/configuration/{alias}": { "delete": { - "operationId": "LaunchDarklyRemoveConfiguration", + "operationId": "CircleCIRemoveConfiguration", "parameters": [ { "in": "path", @@ -12034,7 +11547,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" } } }, @@ -12076,12 +11589,12 @@ }, "summary": "Delete a configuration", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "LaunchDarklyGetConfiguration", + "operationId": "CircleCIGetConfiguration", "parameters": [ { "in": "path", @@ -12097,7 +11610,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LaunchDarklyConfiguration" + "$ref": "#/components/schemas/CircleCiConfiguration" } } }, @@ -12129,13 +11642,13 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" }, "put": { "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "LaunchDarklyUpdateConfiguration", + "operationId": "CircleCIUpdateConfiguration", "parameters": [ { "in": "path", @@ -12150,7 +11663,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LaunchDarklyUpdateConfigurationRequest" + "$ref": "#/components/schemas/CircleCiUpdateConfigurationRequest" } } }, @@ -12161,7 +11674,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" } } }, @@ -12203,14 +11716,14 @@ }, "summary": "Update a configuration", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/launchdarkly/configurations": { + "/api/v1/circleci/configurations": { "delete": { - "operationId": "LaunchDarklyRemoveAllConfigurations", + "operationId": "CircleCIRemoveAllConfigurations", "responses": { "200": { "description": "Successfully deleted all configurations" @@ -12241,18 +11754,18 @@ }, "summary": "Delete all configurations", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "LaunchDarklyListConfigurations", + "operationId": "CircleCIListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCircleCiConfiguration" } } }, @@ -12274,17 +11787,17 @@ }, "summary": "Retrieve configurations", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "LaunchDarklySaveConfigurations", + "operationId": "CircleCISaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestLaunchDarklyConfigurationRequest" + "$ref": "#/components/schemas/ConfigurationsRequestCircleCiConfigurationRequest" } } }, @@ -12295,7 +11808,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseLaunchDarklyConfiguration" + "$ref": "#/components/schemas/MultipleConfigurationsResponseCircleCiConfiguration" } } }, @@ -12317,20 +11830,20 @@ }, "summary": "Add multiple configurations", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/launchdarkly/default-configuration": { + "/api/v1/circleci/default-configuration": { "get": { - "operationId": "LaunchDarklyGetDefaultConfiguration", + "operationId": "CircleCIGetDefaultConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LaunchDarklyConfiguration" + "$ref": "#/components/schemas/CircleCiConfiguration" } } }, @@ -12352,20 +11865,19 @@ }, "summary": "Retrieve default configuration", "tags": [ - "[Integrations] LaunchDarkly" + "[Integrations] CircleCI" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/mcp/my/workspace": { + "/api/v1/clickup/configuration": { "post": { - "description": "Retrieve various types of resources owned by or assigned to the current user", - "operationId": "getMyWorkspace", + "operationId": "ClickUpSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MyWorkspaceRequestWrapper" + "$ref": "#/components/schemas/ClickupConfigurationRequest" } } }, @@ -12376,53 +11888,229 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MyWorkspaceResponse" + "$ref": "#/components/schemas/ConfigurationsResponseClickupConfigurationResponse" } } }, - "description": "Successfully retrieved resources" + "description": "Successfully added configuration" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MyWorkspaceResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Invalid resource type or parameters" + "description": "Bad Request" }, - "401": { + "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MyWorkspaceResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Authentication required" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get resources for the authenticated user", + "summary": "Add a configuration", "tags": [ - "My Workspace" + "[Integrations] ClickUp" ], - "x-cortex-mcp-description": "TOOL for retrieving current user\u0027s owned resources and work items across the Cortex workspace.\n\n FLEXIBLE REQUEST STRUCTURE:\n The request accepts an object with optional fields for each resource type:\n - myEntitiesRequest: Fetch entities (services, resources, domains) owned by the user\n - myTeamsRequest: Fetch teams the user belongs to\n - myScorecardsRequest: Fetch scorecards associated with user\u0027s entities\n - myOpenPRsRequest: Fetch user\u0027s open pull requests across all Git repositories\n - myRequestedReviewsRequest: Fetch PRs where user is requested as a reviewer\n - myWorkItemsRequest: Fetch work items (Jira, Linear, Azure DevOps) assigned to the user\n\n Set one or more fields to fetch multiple resource types in a single call.\n All results are combined into a single response array with mixed item types.\n\n RESPONSE STRUCTURE:\n Returns a single array of items where each item has an \u0027itemType\u0027 field indicating its type:\n - \u0027entity\u0027: Catalog entities (services, resources, domains)\n - \u0027team\u0027: Teams the user belongs to\n - \u0027scorecard\u0027: Scorecards for user\u0027s entities\n - \u0027pull_request\u0027: Open pull requests authored by the user\n - \u0027review_request\u0027: Pull requests where user is requested as reviewer\n - \u0027work_item\u0027: Work items (issues/tickets) assigned to the user\n\n EXAMPLES:\n 1. Fetch only services:\n {\"myEntitiesRequest\": {\"entityTypes\": [\"service\"]}}\n\n 2. Fetch teams and their entities:\n {\"myTeamsRequest\": {\"includeMembers\": true}, \"myEntitiesRequest\": {}}\n\n 3. Get all work (PRs, reviews, Jira tickets):\n {\"myOpenPRsRequest\": {}, \"myRequestedReviewsRequest\": {}, \"myWorkItemsRequest\": {}}\n\n 4. Search entities with filters:\n {\"myEntitiesRequest\": {\"query\": \"payment\", \"ownershipSource\": \"DIRECT\", \"entityTypes\": [\"service\", \"resource\"]}}\n ", - "x-cortex-mcp-enabled": "true", - "x-internal": true + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "ClickUpReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClickupConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseClickupConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] ClickUp" + ], + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/newrelic/configuration": { + "/api/v1/clickup/configuration/validate": { "post": { - "operationId": "NewRelicSaveConfiguration", + "operationId": "ClickUpValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] ClickUp" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/clickup/configurations": { + "delete": { + "operationId": "ClickUpDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseClickupConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] ClickUp" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/clickup/default-configuration": { + "get": { + "operationId": "ClickUpGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClickupConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] ClickUp" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/codecov/configuration": { + "post": { + "operationId": "CodecovSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NewrelicConfigurationRequest" + "$ref": "#/components/schemas/CodecovConfigurationRequest" } } }, @@ -12433,7 +12121,240 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCodecovConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Codecov" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "CodecovReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CodecovConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseCodecovConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Codecov" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/codecov/configuration/validate": { + "post": { + "operationId": "CodecovValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Codecov" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/codecov/configurations": { + "delete": { + "operationId": "CodecovDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseCodecovConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Codecov" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/codecov/default-configuration": { + "get": { + "operationId": "CodecovGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CodecovConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Codecov" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/coralogix/configuration": { + "post": { + "operationId": "CoralogixSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CoralogixConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" } } }, @@ -12465,14 +12386,14 @@ }, "summary": "Add a single configuration", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/newrelic/configuration/validate": { + "/api/v1/coralogix/configuration/validate": { "post": { - "operationId": "NewRelicValidateAllConfigurations", + "operationId": "CoralogixValidateAllConfigurations", "responses": { "200": { "content": { @@ -12500,14 +12421,14 @@ }, "summary": "Validate all configurations", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/newrelic/configuration/validate/{alias}": { + "/api/v1/coralogix/configuration/validate/{alias}": { "post": { - "operationId": "NewRelicValidateConfiguration", + "operationId": "CoralogixValidateConfiguration", "parameters": [ { "in": "path", @@ -12545,14 +12466,14 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/newrelic/configuration/{alias}": { + "/api/v1/coralogix/configuration/{alias}": { "delete": { - "operationId": "NewRelicRemoveConfiguration", + "operationId": "CoralogixRemoveConfiguration", "parameters": [ { "in": "path", @@ -12568,7 +12489,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" } } }, @@ -12610,12 +12531,12 @@ }, "summary": "Delete a configuration", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "NewRelicGetConfiguration", + "operationId": "CoralogixGetConfiguration", "parameters": [ { "in": "path", @@ -12631,7 +12552,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NewrelicConfiguration" + "$ref": "#/components/schemas/CoralogixConfiguration" } } }, @@ -12663,13 +12584,13 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" }, "put": { "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "NewRelicUpdateConfiguration", + "operationId": "CoralogixUpdateConfiguration", "parameters": [ { "in": "path", @@ -12684,7 +12605,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NewrelicUpdateConfigurationRequest" + "$ref": "#/components/schemas/CoralogixUpdateConfigurationRequest" } } }, @@ -12695,7 +12616,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" } } }, @@ -12737,14 +12658,14 @@ }, "summary": "Update a configuration", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/newrelic/configurations": { + "/api/v1/coralogix/configurations": { "delete": { - "operationId": "NewRelicRemoveAllConfigurations", + "operationId": "CoralogixRemoveAllConfigurations", "responses": { "200": { "description": "Successfully deleted all configurations" @@ -12775,18 +12696,18 @@ }, "summary": "Delete all configurations", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "NewRelicListConfigurations", + "operationId": "CoralogixListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseCoralogixConfiguration" } } }, @@ -12808,17 +12729,17 @@ }, "summary": "Retrieve configurations", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" }, "post": { - "operationId": "NewRelicSaveConfigurations", + "operationId": "CoralogixSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestNewrelicConfigurationRequest" + "$ref": "#/components/schemas/ConfigurationsRequestCoralogixConfigurationRequest" } } }, @@ -12829,7 +12750,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseNewrelicConfiguration" + "$ref": "#/components/schemas/MultipleConfigurationsResponseCoralogixConfiguration" } } }, @@ -12851,20 +12772,20 @@ }, "summary": "Add multiple configurations", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/newrelic/default-configuration": { + "/api/v1/coralogix/default-configuration": { "get": { - "operationId": "NewRelicGetDefaultConfiguration", + "operationId": "CoralogixGetDefaultConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NewrelicConfiguration" + "$ref": "#/components/schemas/CoralogixConfiguration" } } }, @@ -12886,254 +12807,196 @@ }, "summary": "Retrieve default configuration", "tags": [ - "[Integrations] New Relic" + "[Integrations] Coralogix" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/notifications/logs": { - "get": { - "description": "Retrieve notification logs based on the provided filters. API key must have the `View Notification logs` permission.", - "operationId": "listNotificationLogs", + "/api/v1/custom-integrations/data/{uuid}": { + "post": { + "description": "Refer to the [Webhook section](/docs/reference/basics/custom-data#webhook) of the Custom Data docs for more information. This API is preconfigured in your workspace settings under Custom Integrations. The UUID corresponds to a custom data key, as well as a `jq` command that maps the data in this payload to an entity in your workspace.", + "operationId": "addCustomDataViaWebhook", "parameters": [ { - "description": "The unique identifier of the notification run that this log is associated with.", - "in": "query", - "name": "notificationRunIds", - "required": false, + "in": "path", + "name": "uuid", + "required": true, "schema": { - "type": "array", - "items": { - "type": "integer", - "format": "int64" - } + "type": "string" } - }, - { - "description": "The type of notification.", - "in": "query", - "name": "notificationTypes", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "INITIATIVE_CREATION", - "INITIATIVE_CUSTOM_SCHEDULE", - "INITIATIVE_N_DAYS_LEFT", - "SERVICE_REEVALUATED", - "WEEKLY_REPORT", - "BROKEN_OPEN_API_SPEC", - "ENTITLEMENT_EXPIRATION", - "ONCALL_ASSISTANT", - "ONBOARDING_MESSAGE", - "NOTIFY_INVALID_INTEGRATION", - "ONCALL_PERSON_CHANGED", - "ONCALL_STARTS_IN_N_DAYS", - "TEAM_MEMBER_INVITATION", - "PENDING_RULE_EXEMPTION", - "TOKEN_EXPIRES_IN_N_DAYS", - "SCHEDULED_SCORECARD_RULE_CREATION", - "SCORECARD_RULE_ACTIVATES_IN_N_DAYS", - "WORKFLOW_STATUS_UPDATE", - "WORKFLOW_APPROVAL_PENDING", - "VERIFICATION_PERIOD_STARTED", - "VERIFICATION_PERIOD_REMINDER", - "AI_ASSISTANT_WELCOME_MESSAGE", - "ENTITY_SCORE_DROPPED", - "ONBOARDING_WIZARD_STATE_COMPLETED" - ] - } - } - }, - { - "description": "The status of the notification.", - "in": "query", - "name": "statuses", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "READY", - "IGNORED", - "FAILED", - "DELIVERED" - ] + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } }, - { - "description": "The type of the notification recipient.", - "in": "query", - "name": "recipientTypes", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "USER", - "TEAM", - "ENTITY" - ] - } - } + "description": "A JSON object that contains a valid entity tag in the payload, queryable with the `jq` command defined for this webhook in your workspace.", + "required": true + }, + "responses": { + "200": { + "description": "OK" }, - { - "description": "The email address that this notification was sent to.", - "in": "query", - "name": "recipientEmails", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add custom data via webhook", + "tags": [ + "Custom Data" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/datadog/configuration": { + "post": { + "operationId": "DatadogSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatadogConfigurationRequest" } } }, - { - "description": "The unique identifiers of the entities that the notifications were sent to.", - "in": "query", - "name": "recipientEntityIds", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "integer", - "format": "int64" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" + } } - } + }, + "description": "Successfully added configuration" }, - { - "description": "The channel in Slack or MS Teams where the notification was sent.", - "in": "query", - "name": "recipientChannels", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } + }, + "description": "Bad Request" }, - { - "description": "The medium used to send the notification.", - "in": "query", - "name": "mediums", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "SLACK", - "MICROSOFT_TEAMS", - "EMAIL", - "WEBHOOK" - ] + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } + }, + "description": "Forbidden" }, - { - "description": "The reason why a notification was ignored.", - "in": "query", - "name": "ignoredReasons", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "USER_UNSUBSCRIBED", - "WORKSPACE_DISABLED", - "CHANNEL_DISABLED", - "DUPLICATE", - "CORTEX_EMPLOYEE", - "NON_CORTEX_USERS_DISABLED", - "UNSUPPORTED" - ] + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/datadog/configuration/validate": { + "post": { + "operationId": "DatadogValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } } - } + }, + "description": "Successfully validated all configurations" }, - { - "description": "The reason why a notification failed to send.", - "in": "query", - "name": "failedReasons", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CHANNEL_NOT_FOUND", - "MEMBER_EMAILS_NOT_FOUND", - "MISSING_CONTENT", - "CLIENT_ERROR", - "BACKSTAGE_BASE_URL_MISSING", - "NO_SEATS_LEFT" - ] + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } - }, - { - "description": "The ISO date and time to start the search from.", - "example": "2021-01-01T00:00:00", - "in": "query", - "name": "fromDate", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "description": "The ISO date and time to end the search at.", - "example": "2021-01-01T00:00:00", - "in": "query", - "name": "untilDate", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } + }, + "description": "Configuration not found" }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/datadog/configuration/validate/{alias}": { + "post": { + "operationId": "DatadogValidateConfiguration", + "parameters": [ { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", + "in": "path", + "name": "alias", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 250 + "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/datadog/configuration/{alias}": { + "delete": { + "operationId": "DatadogRemoveConfiguration", + "parameters": [ { - "description": "Sort the results ascending or descending.", - "in": "query", - "name": "orderBy", - "required": false, + "in": "path", + "name": "alias", + "required": true, "schema": { - "type": "string", - "default": "DESC", - "enum": [ - "ASC", - "DESC" - ] + "type": "string" } } ], @@ -13142,11 +13005,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationLogResponse" + "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" } } }, - "description": "Successfully retrieved notification logs" + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "403": { "content": { @@ -13158,151 +13031,389 @@ }, "description": "Forbidden" }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve notification logs", + "summary": "Delete a configuration", "tags": [ - "Notification Logs" + "[Integrations] Datadog" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/notifications/logs/run": { + }, "get": { - "description": "Retrieve notification runs based on the provided filters. API key must have the `View Notification logs` permission.", - "operationId": "listNotificationRuns", + "operationId": "DatadogGetConfiguration", "parameters": [ { - "description": "The type of notification.", - "in": "query", - "name": "notificationTypes", - "required": false, + "in": "path", + "name": "alias", + "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "INITIATIVE_CREATION", - "INITIATIVE_CUSTOM_SCHEDULE", - "INITIATIVE_N_DAYS_LEFT", - "SERVICE_REEVALUATED", - "WEEKLY_REPORT", - "BROKEN_OPEN_API_SPEC", - "ENTITLEMENT_EXPIRATION", - "ONCALL_ASSISTANT", - "ONBOARDING_MESSAGE", - "NOTIFY_INVALID_INTEGRATION", - "ONCALL_PERSON_CHANGED", - "ONCALL_STARTS_IN_N_DAYS", - "TEAM_MEMBER_INVITATION", - "PENDING_RULE_EXEMPTION", - "TOKEN_EXPIRES_IN_N_DAYS", - "SCHEDULED_SCORECARD_RULE_CREATION", - "SCORECARD_RULE_ACTIVATES_IN_N_DAYS", - "WORKFLOW_STATUS_UPDATE", - "WORKFLOW_APPROVAL_PENDING", - "VERIFICATION_PERIOD_STARTED", - "VERIFICATION_PERIOD_REMINDER", - "AI_ASSISTANT_WELCOME_MESSAGE", - "ENTITY_SCORE_DROPPED", - "ONBOARDING_WIZARD_STATE_COMPLETED" - ] - } + "type": "string" } - }, - { - "description": "The status of the notification.", - "in": "query", - "name": "statuses", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "CREATED", - "FAILED", - "IGNORED", - "COMPLETED", - "COMPLETED_WITH_ERRORS" - ] + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatadogConfiguration" + } } - } + }, + "description": "Successfully found configuration" }, - { - "description": "The medium used to send the notification.", - "in": "query", - "name": "mediums", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "SLACK", - "MICROSOFT_TEAMS", - "EMAIL", - "WEBHOOK" - ] + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } + }, + "description": "Bad Request" }, - { - "description": "The reason why a notification run was ignored.", - "in": "query", - "name": "ignoredReasons", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "SCORECARD_DISABLED", - "WORKSPACE_DISABLED", - "NO_RECIPIENTS" - ] + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } - } + }, + "description": "Configuration not found" }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "DatadogUpdateConfiguration", + "parameters": [ { - "description": "The reason why a notification run failed.", - "in": "query", - "name": "failedReasons", - "required": false, + "in": "path", + "name": "alias", + "required": true, "schema": { - "type": "array", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatadogUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/datadog/configurations": { + "delete": { + "operationId": "DatadogRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "DatadogListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseDatadogConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "DatadogSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestDatadogConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseDatadogConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/datadog/default-configuration": { + "get": { + "operationId": "DatadogGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatadogConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Datadog" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/deploys/environments": { + "get": { + "operationId": "listDeployEnvironments", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeployEnvironmentsResponse" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List all distinct deploy environments for this tenant", + "tags": [ + "Deploys" + ], + "x-cortex-mcp-description": "List all distinct deploy environment names for this tenant. Use before getDeploysForEntity to pass the correct environment values.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/deploys/search": { + "get": { + "operationId": "searchDeploys", + "parameters": [ + { + "description": "Filter by environment names (exact match, any of)", + "in": "query", + "name": "environments", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Filter by deploy types: DEPLOY, ROLLBACK, SCALE, RESTART", + "in": "query", + "name": "types", + "required": false, + "schema": { + "type": "array", "items": { "type": "string", "enum": [ - "PACKET_GENERATOR_ERROR", - "CONTEXT_RESOLUTION_ERROR", - "INTERNAL_ERROR" + "DEPLOY", + "SCALE", + "ROLLBACK", + "RESTART" ] } } }, { - "description": "A search query to filter the results.", + "description": "Filter to these entity tags or CIDs (any of)", "in": "query", - "name": "searchQuery" + "name": "entityTagOrIds", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } }, { - "description": "Whether to include the objects associated with the notification run.", + "description": "Only deploys at or after this timestamp (UTC, e.g. 2026-06-22T00:00:00)", "in": "query", - "name": "includeObjects", + "name": "timestampAfter", "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "format": "date-time" } }, { - "description": "The ISO date and time to start the search from.", - "example": "2021-01-01T00:00:00", + "description": "Only deploys at or before this timestamp (UTC, e.g. 2026-06-22T00:00:00)", "in": "query", - "name": "fromDate", + "name": "timestampBefore", "required": false, "schema": { "type": "string", @@ -13310,72 +13421,12504 @@ } }, { - "description": "The ISO date and time to end the search at.", - "example": "2021-01-01T00:00:00", + "description": "Number of results to return per page, between 1 and 1000. Default 250.", "in": "query", - "name": "untilDate", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomDeployListPaginatedResponse" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Search deployments across the tenant", + "tags": [ + "Deploys" + ], + "x-cortex-mcp-description": "Get deployments with server-side filtering (environment, type, entity, time range). Pass entityTagOrIds\u003d[\u0027my-tag\u0027] to get deployments for a single entity, or omit it to search tenant-wide.\n\nEnvironments are matched exactly — call listDeployEnvironments first to discover values (e.g. \u0027prod\u0027 vs \u0027prod2ndmd\u0027).", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/discovery-audit": { + "get": { + "description": "This report shows you recent changes in your environment that aren\u0027t reflected in Cortex, including newly created repositories, services, and resources that we discover from your integrations or which were deleted in the environment but corresponding Cortex entities are still present.", + "operationId": "getDiscoveryAudit", + "parameters": [ + { + "description": "Filter based on type of the event", + "in": "query", + "name": "type", "required": false, "schema": { "type": "string", - "format": "date-time" + "enum": [ + "NEW_REPOSITORY", + "REPOSITORY_DELETED", + "REPOSITORY_ARCHIVED", + "NEW_K8S_RESOURCE", + "NEW_APM_RESOURCE", + "APM_RESOURCE_NOT_DETECTED", + "NEW_AWS_RESOURCE", + "AWS_RESOURCE_NOT_DETECTED", + "NEW_GOOGLE_CLOUD_RESOURCE", + "GOOGLE_CLOUD_RESOURCE_NOT_DETECTED", + "NEW_AZURE_RESOURCE", + "AZURE_RESOURCE_NOT_DETECTED" + ] } }, { + "description": "Filter based on integration source", "in": "query", - "name": "deliveredOnly", + "name": "source", + "required": false, + "schema": { + "type": "string", + "enum": [ + "AWS", + "AZURE_DEVOPS", + "AZURE_RESOURCES", + "BITBUCKET", + "DATADOG", + "DYNATRACE", + "GCP", + "GITHUB", + "GITLAB", + "INSTANA", + "K8S", + "LIGHTSTEP", + "LAMBDA_CLOUD_CONTROL", + "NEWRELIC", + "SERVICENOW", + "SERVICENOW_DOMAIN" + ] + } + }, + { + "description": "Flag to include ignored events in result", + "in": "query", + "name": "includeIgnored", "required": false, "schema": { "type": "boolean", - "default": true + "default": false + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DiscoveryAuditReportResponse" + } + } + }, + "description": "Successfully retrieved discovery audit report" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve discovery audit report", + "tags": [ + "Discovery Audit" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/dynatrace/configuration": { + "post": { + "operationId": "DynatraceSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DynatraceConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseDynatraceConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Dynatrace" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "DynatraceReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DynatraceConfigurationRequest" + } } }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseDynatraceConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Dynatrace" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/dynatrace/configuration/validate": { + "post": { + "operationId": "DynatraceValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Dynatrace" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/dynatrace/configurations": { + "delete": { + "operationId": "DynatraceDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseDynatraceConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Dynatrace" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/dynatrace/default-configuration": { + "get": { + "operationId": "DynatraceGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DynatraceConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Dynatrace" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}": { + "delete": { + "description": "Deletes custom metric data points for entity.", + "operationId": "deleteByTimeRange", + "parameters": [ + { + "description": "Key for the custom metric filter", + "in": "path", + "name": "customMetricKey", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Start date for the deletion (inclusive)", + "in": "query", + "name": "startDate", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "End date for the deletion (inclusive)", + "in": "query", + "name": "endDate", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "responses": { + "204": { + "description": "Successfully deleted data points" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid filters" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete custom metrics data points", + "tags": [ + "Custom Metrics" + ], + "x-cortex-mcp-description": "Delete custom metric data points within a time range. Disabled for MCP access to preserve metric history", + "x-cortex-mcp-enabled": "false" + }, + "get": { + "description": "Lists all custom metrics data points for an entity", + "operationId": "getCustomMetricData", + "parameters": [ + { + "description": "Key for the custom metric filter", + "in": "path", + "name": "customMetricKey", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + }, + { + "description": "Start date for the filter, inclusive (UTC, e.g. 2026-06-22T00:00:00). Default: 6 months ago", + "in": "query", + "name": "startDate", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "End date for the filter, inclusive (UTC, e.g. 2026-06-22T00:00:00)", + "in": "query", + "name": "endDate", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomMetricDataResponse" + } + } + }, + "description": "Successfully retrieved custom metrics data points" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid filters" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve custom metrics data points", + "tags": [ + "Custom Metrics" + ], + "x-cortex-mcp-description": "Retrieve custom metric data points for an entity. Returns paginated time-series data for a specific custom metric, with optional filtering by date range to analyze trends and patterns.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Adds a single custom metric data point for entity.", + "operationId": "createCustomMetricData", + "parameters": [ + { + "description": "Key for the custom metric filter", + "in": "path", + "name": "customMetricKey", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCustomDataRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully added data point" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid filters" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add custom metrics data point", + "tags": [ + "Custom Metrics" + ], + "x-cortex-mcp-description": "Add one data point (value plus an optional timestamp, which defaults to now) to an entity\u0027s custom metric, identified by customMetricKey. The metric must already be defined. Timestamps cannot be in the future or more than 2 years old. Every call adds another point, so retrying creates duplicates. Read data back with getCustomMetricData.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}/bulk": { + "post": { + "description": "Adds multiple custom metric data points for entity.", + "operationId": "createBulkCustomMetricData", + "parameters": [ + { + "description": "Key for the custom metric filter", + "in": "path", + "name": "customMetricKey", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCustomDataBulkRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully added data points" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid filters" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add custom metrics data points in bulk", + "tags": [ + "Custom Metrics" + ], + "x-cortex-mcp-description": "Add multiple custom metric data points in bulk. Disabled for MCP access to prevent external systems from modifying metric data", + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/eng-intel/labels": { + "get": { + "description": "Retrieves a list of all available user labels.\n\nAPI key must have the `View Eng Intelligence` permission.", + "operationId": "listUserLabels", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserLabelListResponse" + } + } + }, + "description": "Successfully retrieved user labels" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List user labels", + "tags": [ + "Eng Intel: User Labels" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/eng-intel/labels/users": { + "post": { + "description": "Assign user label values to user emails in bulk.\n\nAPI key must have the `Edit user labels` permission.", + "operationId": "updateUserLabelAssignments", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkUserLabelAssignmentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkUserLabelAssignmentResponse" + } + } + }, + "description": "Successfully updated user label assignments" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update user label assignments", + "tags": [ + "Eng Intel: User Labels" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/eng-intel/labels/{id}": { + "get": { + "description": "Get user label.\n\nAPI key must have the `View Eng Intelligence` permission.", + "operationId": "getUserLabel", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserLabel" + } + } + }, + "description": "Successfully retrieved user label" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "User label not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve user label", + "tags": [ + "Eng Intel: User Labels" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/eng-intel/metrics/point-in-time": { + "post": { + "description": "Query current metric values with optional period comparisons and flexible grouping. Supports batch queries for multiple metrics efficiently.", + "operationId": "queryPointInTimeMetrics", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchPointInTimeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointInTimeResponse" + } + } + }, + "description": "Successfully executed metrics query" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointInTimeResponse" + } + } + }, + "description": "Invalid metric names, date range exceeds 6 months, validation errors, or unsupported orderBy attributes" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointInTimeResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Execute point-in-time engineering metrics queries", + "tags": [ + "Eng Intel: 2-Metrics" + ], + "x-cortex-mcp-description": "Execute point-in-time queries for one or more engineering metrics.\n\nReturns current metric values for specified time periods, with support for batch queries. Time range (startTime/endTime) cannot exceed 6 months (180 days).\n\nCOMPARISON FIELD: If you need to compare against a different time window, use the comparison field with type\u003d\u0027TIME_WINDOW\u0027.\nThe ONLY valid type is TIME_WINDOW. Do NOT use PERIOD_OVER_PERIOD or any other type.\nExample: {\"type\": \"TIME_WINDOW\", \"startTime\": \"2025-01-01T00:00:00\", \"endTime\": \"2025-01-15T00:00:00\"}\n\nPREREQUISITES - Follow this workflow:\n1. Discover all available metrics ONCE: Call listMetricDefinitions (view\u003d\u0027basic\u0027) - cache this response\n2. Get metric query metadata ONCE per metric: Call listMetricDefinitions (view\u003d\u0027full\u0027, key\u003dMETRIC_KEY)\n - supportedAggregations: Valid aggregation methods\n - orderByAttribute: Attribute path for sorting by metric values\n - groupByOptions[].key: Valid groupBy keys (use exact values, do NOT guess)\n - filterOptions[].key: Valid filter keys (use exact values, do NOT guess)\n Cache the full view response for each metric. Reuse the metadata from cached responses for subsequent queries on the same metric.\n3. Construct query: Use the query metadata from the full view responses in step 2 to build valid point-in-time requests\n\nIMPORTANT: Cache only results from listMetricDefinitions. Do NOT cache point-in-time query results - always execute fresh queries for current data.\nOnly refresh cached listMetricDefinitions responses if no longer in your context window or explicitly requested.\nDo NOT guess attribute names - always use exact values from listMetricDefinitions responses.\n\nResponse includes:\n- Lightweight metadata: Column definitions optimized for programmatic use\n- Row data: Actual metric values and dimensional data\n- No heavy schemas: Source definitions excluded (get from listMetricDefinitions instead)\n\nError responses:\n- 400: Invalid metric names, date range, validation errors, or unsupported metric combinations\n- 403: Restricted Feature (contact help@cortex.io)", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/eng-intel/registry/metrics/definitions": { + "get": { + "description": "Discover all available engineering metrics and their metadata. Use this before querying metrics to understand what data is available and how to query it effectively.", + "operationId": "listMetricDefinitions", + "parameters": [ + { + "in": "query", + "name": "view", + "required": false, + "schema": { + "type": "string", + "default": "basic" + } + }, + { + "in": "query", + "name": "key", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricDefinitionsResponse" + } + } + }, + "description": "Successfully retrieved metric definitions" + }, + "400": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/BasicMetricDefinitionsResponse" + }, + { + "$ref": "#/components/schemas/FullMetricDefinitionsResponse" + } + ] + } + } + }, + "description": "Invalid query parameters or filters" + }, + "403": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/BasicMetricDefinitionsResponse" + }, + { + "$ref": "#/components/schemas/FullMetricDefinitionsResponse" + } + ] + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List available engineering metric definitions", + "tags": [ + "Eng Intel: 1-Registry" + ], + "x-cortex-mcp-description": "List all available engineering metric definitions.\n\nUSAGE - Call this endpoint BEFORE querying metrics (queryPointInTimeMetrics):\n1. Once at start: Call with view\u003d\u0027basic\u0027 to discover all available metrics - cache this response\n2. Before querying: Call with view\u003d\u0027full\u0027 and key\u003dMETRIC_KEY to get query metadata for only the metrics you need\n3. Use cached metadata to construct valid point-in-time queries\n\nIMPORTANT: Do NOT call view\u003d\u0027full\u0027 without a key filter. The unfiltered full view is very large.\n\nCache responses in your context. Only refresh if no longer in your context window or explicitly requested (ex to check if metric readiness has changed).\n\nQuery parameters:\n- view: \u0027basic\u0027 (default) returns minimal info, \u0027full\u0027 includes sources and query metadata\n- key: Filter metrics by key (supports multiple values and comma-separated lists)\n\nFull view provides query construction metadata:\n- supportedAggregations: Valid aggregation methods for the metric\n- orderByAttribute: Attribute path for sorting by metric values\n- groupByOptions[].key: Valid groupBy keys (use exact values, do NOT guess)\n- filterOptions[].key: Valid filter keys (use exact values, do NOT guess)\n\nValid orderBy attributes for metric queries:\n- orderByAttribute: The metric value itself (returned in full view)\n- Source attributes: Any attribute from the metric\u0027s source (e.g., \"source_name.attribute_name\")\n- Dimension attributes: Any attribute from related dimensions (e.g., \"source_name.dimension_name.attribute_name\")\n\nFilter operators by type (for constructing queries):\n- STRING: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, LIKE, NOT_LIKE, IN, NOT_IN, ANY\n- INTEGER/DECIMAL/DOUBLE: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IN, NOT_IN, BETWEEN, ANY\n- DATETIME/DATE: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, BETWEEN\n- BOOLEAN: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, IN, NOT_IN\n- ARRAY: EQUAL, CONTAINS, IN\n\nError responses:\n- 400: Invalid view parameter (must be \u0027basic\u0027 or \u0027full\u0027)\n- 403: Restricted Feature (contact help@cortex.io)", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/eng-intel/trace": { + "post": { + "description": "Retrieve individual event records with flexible filtering, ordering, and pagination. Supports any engineering data source registered in the registry.", + "operationId": "queryTraceEvents", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TraceEventsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TraceEventsResponse" + } + } + }, + "description": "Successfully executed trace query" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TraceEventsResponse" + } + } + }, + "description": "Invalid source, date range exceeds 6 months, limit exceeds 500, or validation errors" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TraceEventsResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Query raw trace events from engineering data sources", + "tags": [ + "Eng Intel: 3-Trace" + ], + "x-cortex-mcp-description": "Query raw trace events from engineering data sources.\n\nReturns individual event records (pull requests, deployments, CI runs, etc.) with flexible filtering, ordering, and pagination. Time range (startDate/endDate) cannot exceed 6 months (180 days). Maximum 5000 results per request.\n\nPREREQUISITES - Follow this workflow:\n1. Discover available sources and attributes: Call listMetricDefinitions (view\u003d\u0027full\u0027) to see available data sources\n2. Use source names and attribute keys from the registry response to construct your trace query\n3. Do NOT guess attribute names - always use exact values from listMetricDefinitions responses\n\nIMPORTANT: Use exact attribute names from the registry. Filters use the same AttributeFilter format as the metrics API.\n\nLINKING: Most sources have a URL attribute (e.g., \u0027pull_requests.url\u0027, \u0027deployments.url\u0027). Always include URL attributes in your query so you can hyperlink results in Slack using \u003cURL|display text\u003e format.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/firehydrant/configuration": { + "post": { + "operationId": "FirehydrantSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirehydrantConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseFirehydrantConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Firehydrant" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "FirehydrantReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirehydrantConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseFirehydrantConfiguration" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Firehydrant" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/firehydrant/configuration/validate": { + "post": { + "operationId": "FirehydrantValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Firehydrant" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/firehydrant/configurations": { + "delete": { + "operationId": "FirehydrantDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseFirehydrantConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Firehydrant" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/firehydrant/default-configuration": { + "get": { + "operationId": "FirehydrantGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FirehydrantConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Firehydrant" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations": { + "delete": { + "operationId": "GitHubDeleteConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "GitHubListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllGithubConfigurationResponse" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations/app": { + "post": { + "operationId": "GitHubSaveGithubApp", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubAppRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse.APP" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single app configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations/app/{alias}": { + "delete": { + "operationId": "GitHubRemoveGithubApp", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a single app configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "GitHubGetGithubApp", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse.APP" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a single app configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "GitHubEditGithubApp", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditPersonalConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse.APP" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a single app configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations/personal": { + "post": { + "operationId": "GitHubSavePersonalConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DecryptedPersonalAccessToken" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single personal configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations/personal/{alias}": { + "delete": { + "operationId": "GitHubRemovePersonalConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a personal configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "GitHubGetPersonalConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a single personal configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "GitHubEditPersonalConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditPersonalAccessTokenRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a single personal configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations/validate": { + "post": { + "operationId": "GitHubValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/configurations/validate/{alias}": { + "post": { + "operationId": "GitHubValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/github/default-configuration": { + "get": { + "operationId": "GitHubGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubConfigurationResponse" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] GitHub" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitlab/configuration": { + "post": { + "operationId": "GitLabSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitlabConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitlab/configuration/validate": { + "post": { + "operationId": "GitLabValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitlab/configuration/validate/{alias}": { + "post": { + "operationId": "GitLabValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitlab/configuration/{alias}": { + "delete": { + "operationId": "GitLabRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "GitLabGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitlabConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "GitLabUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitlabUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitlab/configurations": { + "delete": { + "operationId": "GitLabRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "GitLabListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseGitlabConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "GitLabSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestGitlabConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseGitlabConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitlab/default-configuration": { + "get": { + "operationId": "GitLabGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitlabConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] GitLab" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/gitops-logs": { + "get": { + "description": "API key must have the `View GitOps logs` permission.", + "operationId": "listGitOpsLogs", + "parameters": [ + { + "description": "File name the within repository", + "in": "query", + "name": "file", + "schema": { + "type": "string" + } + }, + { + "description": "Repository name as defined in your Git provider", + "in": "query", + "name": "repository", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Commit SHA", + "in": "query", + "name": "sha", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter by error only", + "in": "query", + "name": "errorOnly", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter by operation", + "in": "query", + "name": "operation", + "required": false, + "schema": { + "type": "string", + "enum": [ + "CREATED", + "UPDATED", + "ARCHIVED", + "NO_CHANGE" + ] + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "in": "query", + "name": "fileName", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Unique tag for the Scorecard.", + "in": "query", + "name": "scorecardTag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "workflowTag", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "query", + "name": "tag", + "required": true, + "schema": { + "type": "string", + "description": "The entity tag (`x-cortex-tag`) that identifies the entity." + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitOpsLogPaginatedResponse" + } + } + }, + "description": "Retrieve GitOps logs based on given criteria" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve GitOps logs", + "tags": [ + "GitOps Logs" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/harness/configuration": { + "post": { + "operationId": "HarnessSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HarnessConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseHarnessConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/harness/configuration/validate": { + "post": { + "operationId": "HarnessValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/harness/configuration/validate/{alias}": { + "post": { + "operationId": "HarnessValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/harness/configuration/{alias}": { + "delete": { + "operationId": "HarnessRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseHarnessConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "HarnessGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HarnessConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "HarnessUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HarnessUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseHarnessConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/harness/configurations": { + "delete": { + "operationId": "HarnessRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "HarnessListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseHarnessConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "HarnessSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestHarnessConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseHarnessConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/harness/default-configuration": { + "get": { + "operationId": "HarnessGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HarnessConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Harness" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/incidentio/configuration": { + "post": { + "operationId": "IncidentIoSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncidentIoConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/incidentio/configuration/validate": { + "post": { + "operationId": "IncidentIoValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/incidentio/configuration/validate/{alias}": { + "post": { + "operationId": "IncidentIoValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/incidentio/configuration/{alias}": { + "delete": { + "operationId": "IncidentIoRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "IncidentIoGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncidentIoConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "IncidentIoUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncidentIoUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/incidentio/configurations": { + "delete": { + "operationId": "IncidentIoRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "IncidentIoListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseIncidentIoConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "IncidentIoSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestIncidentIoConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseIncidentIoConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/incidentio/default-configuration": { + "get": { + "operationId": "IncidentIoGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IncidentIoConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Incident.io" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/initiatives": { + "get": { + "description": "Retrieves a list of Initiatives.\n\nAPI key must have the `View Initiatives` permission.", + "operationId": "listInitiatives", + "parameters": [ + { + "description": "Whether or not to include draft Initiatives in the response", + "in": "query", + "name": "includeDrafts", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Whether or not to include expired Initiatives in the response", + "in": "query", + "name": "includeExpired", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InitiativeListResponse" + } + } + }, + "description": "Successfully retrieved Initiatives" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List Initiatives", + "tags": [ + "Initiatives" + ], + "x-cortex-mcp-description": "List all initiatives in the organization with optional filters for draft and expired initiatives. View active improvement programs, strategic projects, and their current status to understand organizational priorities and track progress.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create an Initiative.\n\nAPI key must have the `Edit Initiative` permission.", + "operationId": "createInitiative", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InitiativeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Initiative" + } + } + }, + "description": "Successfully created Initiative" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create an Initiative", + "tags": [ + "Initiatives" + ], + "x-cortex-mcp-description": "Create a new Initiative against one Scorecard (scorecardTag), with a name, a future targetDate and isDraft. Provide emphasizedLevels (by ladder rank, 1 \u003d highest) or emphasizedRules (each expression must exactly match an existing rule expression in that Scorecard; get them from getScorecard). Optionally narrow it with a filter and set a notificationSchedule. Each call creates a new Initiative and is not idempotent. Requires the `Edit Initiative` permission.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/initiatives/{cid}": { + "delete": { + "operationId": "deleteInitiative", + "parameters": [ + { + "in": "path", + "name": "cid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully deleted Initiative" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Initiative not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete Initiative", + "tags": [ + "Initiatives" + ], + "x-cortex-mcp-description": "Delete an initiative. Disabled for MCP access to preserve historical tracking and prevent loss of progress data", + "x-cortex-mcp-enabled": "false" + }, + "get": { + "description": "Get Initiative.\n\nAPI key must have the `View Initiatives` permission.", + "operationId": "getInitiative", + "parameters": [ + { + "in": "path", + "name": "cid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Initiative" + } + } + }, + "description": "Successfully retrieved Initiative" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Initiative not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Get Initiative", + "tags": [ + "Initiatives" + ], + "x-cortex-mcp-description": "Retrieve detailed information about a specific initiative including its goals, timeline, affected entities, scorecard targets, and current progress. Essential for understanding initiative scope and tracking achievement of objectives.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "description": "Update an Initiative.\n\nAPI key must have the `Edit Initiative` permission.", + "operationId": "updateInitiative", + "parameters": [ + { + "in": "path", + "name": "cid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InitiativeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Initiative" + } + } + }, + "description": "Successfully updated Initiative" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Initiative not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update an Initiative", + "tags": [ + "Initiatives" + ], + "x-cortex-mcp-description": "Update an existing Initiative by its CID. The request has the same shape as createInitiative and replaces the Initiative in full; optional fields that are left out are cleared, not kept. Call getInitiative(cid) first and send the complete definition back. Returns 404 if the CID does not exist. Requires the `Edit Initiative` permission.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/instana/configuration": { + "post": { + "operationId": "InstanaSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InstanaConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseInstanaConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Instana" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "InstanaReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InstanaConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseInstanaConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Instana" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/instana/configuration/validate": { + "post": { + "operationId": "InstanaValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Instana" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/instana/configurations": { + "delete": { + "operationId": "InstanaDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseInstanaConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Instana" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/instana/default-configuration": { + "get": { + "operationId": "InstanaGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InstanaConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Instana" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/integrations/status": { + "get": { + "description": "\n Returns every installed integration configuration with the result of its most recent\n connection check. Serves stored results only and never contacts the third-party service.\n The timestamp is when the connection was last checked, not when data was last synced.\n ", + "operationId": "listIntegrationStatuses", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationStatusesResponse" + } + } + }, + "description": "Successfully listed integration statuses" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List installed integrations and their status", + "tags": [ + "Integration Status" + ], + "x-cortex-mcp-description": "List every integration installed in this workspace (GitHub, Jira, PagerDuty, Slack, etc.) with the result of its most recent connection check. Use to find integrations whose credentials are failing (INVALID) or have not been checked recently (UNKNOWN). lastValidatedAt is when the connection was last checked, not when data was last synced, so do not report it as data freshness. message is null unless the caller has the Manage Integrations permission.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/ip-allowlist": { + "get": { + "operationId": "listAllowedIpAddresses", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpAllowlistResponse" + } + } + }, + "description": "Successfully retrieved IP allowlist" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Gets allowlist of IP addresses \u0026 ranges", + "tags": [ + "IP Allowlist" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "upsertAllowedIpAddresses", + "parameters": [ + { + "description": "When true, entries will be updated even if the list doesn\u0027t contain the requestor\u0027s IP address", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpAllowlistRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpAllowlistResponse" + } + } + }, + "description": "Successfully replaced allowlist" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Replace existing allowlist with provided list of IP addresses \u0026 ranges", + "tags": [ + "IP Allowlist" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/ip-allowlist/validate": { + "post": { + "operationId": "validateAllowedIpAddresses", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpAllowlistRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidIpAllowlistEntry" + }, + { + "$ref": "#/components/schemas/InvalidIpAllowlistEntry" + } + ] + } + } + }, + "description": "Successfully validated allowlist" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validates allowlist of IP addresses \u0026 ranges", + "tags": [ + "IP Allowlist" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jenkins/configuration": { + "post": { + "operationId": "JenkinsSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JenkinsConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJenkinsConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jenkins/configuration/validate": { + "post": { + "operationId": "JenkinsValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jenkins/configuration/validate/{alias}": { + "post": { + "operationId": "JenkinsValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jenkins/configuration/{alias}": { + "delete": { + "operationId": "JenkinsRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJenkinsConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "JenkinsGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JenkinsConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "JenkinsUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JenkinsUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJenkinsConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jenkins/configurations": { + "delete": { + "operationId": "JenkinsRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "JenkinsListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJenkinsConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "JenkinsSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestJenkinsConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseJenkinsConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jenkins/default-configuration": { + "get": { + "operationId": "JenkinsGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JenkinsConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Jenkins" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jira/configuration": { + "post": { + "operationId": "JiraSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/JiraCloudBasicRequest" + }, + { + "$ref": "#/components/schemas/JiraCloudScopedRequest" + }, + { + "$ref": "#/components/schemas/JiraOnPremBasicRequest" + } + ] + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJiraConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jira/configuration/validate": { + "post": { + "operationId": "JiraValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jira/configuration/validate/{alias}": { + "post": { + "operationId": "JiraValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jira/configuration/{alias}": { + "delete": { + "operationId": "JiraRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJiraConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "JiraGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JiraConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "JiraUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/JiraCloudBasicUpdateRequest" + }, + { + "$ref": "#/components/schemas/JiraCloudScopedUpdateRequest" + }, + { + "$ref": "#/components/schemas/JiraOnPremBasicUpdateRequest" + } + ] + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJiraConfigurationResponse" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jira/configurations": { + "delete": { + "operationId": "JiraRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "JiraListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseJiraConfigurationResponse" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "JiraSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestJiraConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseJiraConfigurationResponse" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/jira/default-configuration": { + "get": { + "operationId": "JiraGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JiraConfigurationResponse" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Jira" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/launchdarkly/configuration": { + "post": { + "operationId": "LaunchDarklySaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LaunchDarklyConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/launchdarkly/configuration/validate": { + "post": { + "operationId": "LaunchDarklyValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/launchdarkly/configuration/validate/{alias}": { + "post": { + "operationId": "LaunchDarklyValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/launchdarkly/configuration/{alias}": { + "delete": { + "operationId": "LaunchDarklyRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "LaunchDarklyGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LaunchDarklyConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "LaunchDarklyUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LaunchDarklyUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/launchdarkly/configurations": { + "delete": { + "operationId": "LaunchDarklyRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "LaunchDarklyListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLaunchDarklyConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "LaunchDarklySaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestLaunchDarklyConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseLaunchDarklyConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/launchdarkly/default-configuration": { + "get": { + "operationId": "LaunchDarklyGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LaunchDarklyConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] LaunchDarkly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/lightstep/configuration": { + "post": { + "operationId": "LightstepSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LightstepConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLightstepConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Lightstep" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "LightstepReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LightstepConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLightstepConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Lightstep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/lightstep/configuration/validate": { + "post": { + "operationId": "LightstepValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Lightstep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/lightstep/configurations": { + "delete": { + "operationId": "LightstepDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseLightstepConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Lightstep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/lightstep/default-configuration": { + "get": { + "operationId": "LightstepGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LightstepConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Lightstep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mcp/my/workspace": { + "post": { + "description": "Retrieve various types of resources owned by or assigned to the current user", + "operationId": "getMyWorkspace", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MyWorkspaceRequestWrapper" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MyWorkspaceResponse" + } + } + }, + "description": "Successfully retrieved resources" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MyWorkspaceResponse" + } + } + }, + "description": "Invalid resource type or parameters" + }, + "401": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MyWorkspaceResponse" + } + } + }, + "description": "Authentication required" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Get resources for the authenticated user", + "tags": [ + "My Workspace" + ], + "x-cortex-mcp-description": "TOOL for retrieving current user\u0027s owned resources and work items across the Cortex workspace.\n\n FLEXIBLE REQUEST STRUCTURE:\n The request accepts an object with optional fields for each resource type:\n - myEntitiesRequest: Fetch entities (services, resources, domains) owned by the user\n - myTeamsRequest: Fetch teams the user belongs to\n - myScorecardsRequest: Fetch scorecards associated with user\u0027s entities\n - myOpenPRsRequest: Fetch user\u0027s open pull requests across all Git repositories\n - myRequestedReviewsRequest: Fetch PRs where user is requested as a reviewer\n - myWorkItemsRequest: Fetch work items (Jira, Linear, Azure DevOps) assigned to the user\n\n Set one or more fields to fetch multiple resource types in a single call.\n All results are combined into a single response array with mixed item types.\n\n RESPONSE STRUCTURE:\n Returns a single array of items where each item has an \u0027itemType\u0027 field indicating its type:\n - \u0027entity\u0027: Catalog entities (services, resources, domains)\n - \u0027team\u0027: Teams the user belongs to\n - \u0027scorecard\u0027: Scorecards for user\u0027s entities\n - \u0027pull_request\u0027: Open pull requests authored by the user\n - \u0027review_request\u0027: Pull requests where user is requested as reviewer\n - \u0027work_item\u0027: Work items (issues/tickets) assigned to the user\n\n EXAMPLES:\n 1. Fetch only services:\n {\"myEntitiesRequest\": {\"entityTypes\": [\"service\"]}}\n\n 2. Fetch teams and their entities:\n {\"myTeamsRequest\": {\"includeMembers\": true}, \"myEntitiesRequest\": {}}\n\n 3. Get all work (PRs, reviews, Jira tickets):\n {\"myOpenPRsRequest\": {}, \"myRequestedReviewsRequest\": {}, \"myWorkItemsRequest\": {}}\n\n 4. Search entities with filters:\n {\"myEntitiesRequest\": {\"query\": \"payment\", \"ownershipSource\": \"DIRECT\", \"entityTypes\": [\"service\", \"resource\"]}}\n ", + "x-cortex-mcp-enabled": "true", + "x-internal": true + } + }, + "/api/v1/mend/sast/configuration": { + "post": { + "operationId": "MendSASTSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MendSastConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseMendSastConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Mend SAST" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "MendSASTReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MendSastConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseMendSastConfiguration" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Mend SAST" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sast/configuration/validate": { + "post": { + "operationId": "MendSASTValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Mend SAST" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sast/configurations": { + "delete": { + "operationId": "MendSASTDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseMendSastConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Mend SAST" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sast/default-configuration": { + "get": { + "operationId": "MendSASTGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MendSastConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Mend SAST" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sca/configuration": { + "post": { + "operationId": "MendSCASaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MendScaConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseMendScaConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Mend SCA" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "MendSCAReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MendScaConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseMendScaConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Mend SCA" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sca/configuration/validate": { + "post": { + "operationId": "MendSCAValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Mend SCA" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sca/configurations": { + "delete": { + "operationId": "MendSCADeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseMendScaConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Mend SCA" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/mend/sca/default-configuration": { + "get": { + "operationId": "MendSCAGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MendScaConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Mend SCA" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/newrelic/configuration": { + "post": { + "operationId": "NewRelicSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewrelicConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/newrelic/configuration/validate": { + "post": { + "operationId": "NewRelicValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/newrelic/configuration/validate/{alias}": { + "post": { + "operationId": "NewRelicValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/newrelic/configuration/{alias}": { + "delete": { + "operationId": "NewRelicRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "NewRelicGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewrelicConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "NewRelicUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewrelicUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/newrelic/configurations": { + "delete": { + "operationId": "NewRelicRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "NewRelicListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseNewrelicConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "NewRelicSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestNewrelicConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseNewrelicConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/newrelic/default-configuration": { + "get": { + "operationId": "NewRelicGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewrelicConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] New Relic" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/notifications/logs": { + "get": { + "description": "Retrieve notification logs based on the provided filters. API key must have the `View Notification logs` permission.", + "operationId": "listNotificationLogs", + "parameters": [ + { + "description": "The unique identifier of the notification run that this log is associated with.", + "in": "query", + "name": "notificationRunIds", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + { + "description": "The type of notification.", + "in": "query", + "name": "notificationTypes", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INITIATIVE_CREATION", + "INITIATIVE_CUSTOM_SCHEDULE", + "INITIATIVE_N_DAYS_LEFT", + "SERVICE_REEVALUATED", + "WEEKLY_REPORT", + "BROKEN_OPEN_API_SPEC", + "ENTITLEMENT_EXPIRATION", + "ONCALL_ASSISTANT", + "ONBOARDING_MESSAGE", + "NOTIFY_INVALID_INTEGRATION", + "ONCALL_PERSON_CHANGED", + "ONCALL_STARTS_IN_N_DAYS", + "TEAM_MEMBER_INVITATION", + "PENDING_RULE_EXEMPTION", + "TOKEN_EXPIRES_IN_N_DAYS", + "SCHEDULED_SCORECARD_RULE_CREATION", + "SCORECARD_RULE_ACTIVATES_IN_N_DAYS", + "WORKFLOW_STATUS_UPDATE", + "WORKFLOW_APPROVAL_PENDING", + "VERIFICATION_PERIOD_STARTED", + "VERIFICATION_PERIOD_REMINDER", + "AI_ASSISTANT_WELCOME_MESSAGE", + "ENTITY_SCORE_DROPPED", + "ONBOARDING_WIZARD_STATE_COMPLETED", + "EXPORT_COMPLETED", + "OPEX_COMMENT_MENTION", + "OPEX_COMMENT_THREAD_ACTIVITY" + ] + } + } + }, + { + "description": "The status of the notification.", + "in": "query", + "name": "statuses", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "READY", + "IGNORED", + "FAILED", + "DELIVERED" + ] + } + } + }, + { + "description": "The type of the notification recipient.", + "in": "query", + "name": "recipientTypes", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "USER", + "TEAM", + "ENTITY" + ] + } + } + }, + { + "description": "The email address that this notification was sent to.", + "in": "query", + "name": "recipientEmails", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "The unique identifiers of the entities that the notifications were sent to.", + "in": "query", + "name": "recipientEntityIds", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + { + "description": "The channel in Slack or MS Teams where the notification was sent.", + "in": "query", + "name": "recipientChannels", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "The medium used to send the notification.", + "in": "query", + "name": "mediums", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SLACK", + "MICROSOFT_TEAMS", + "EMAIL", + "WEBHOOK" + ] + } + } + }, + { + "description": "The reason why a notification was ignored.", + "in": "query", + "name": "ignoredReasons", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "USER_UNSUBSCRIBED", + "WORKSPACE_DISABLED", + "CHANNEL_DISABLED", + "DUPLICATE", + "CORTEX_EMPLOYEE", + "NON_CORTEX_USERS_DISABLED", + "UNSUPPORTED" + ] + } + } + }, + { + "description": "The reason why a notification failed to send.", + "in": "query", + "name": "failedReasons", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CHANNEL_NOT_FOUND", + "MEMBER_EMAILS_NOT_FOUND", + "MISSING_CONTENT", + "CLIENT_ERROR", + "BACKSTAGE_BASE_URL_MISSING", + "NO_SEATS_LEFT" + ] + } + } + }, + { + "description": "The ISO date and time to start the search from.", + "example": "2021-01-01T00:00:00", + "in": "query", + "name": "fromDate", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "The ISO date and time to end the search at.", + "example": "2021-01-01T00:00:00", + "in": "query", + "name": "untilDate", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Sort the results ascending or descending.", + "in": "query", + "name": "orderBy", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "DESC" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationLogResponse" + } + } + }, + "description": "Successfully retrieved notification logs" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve notification logs", + "tags": [ + "Notification Logs" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/notifications/logs/run": { + "get": { + "description": "Retrieve notification runs based on the provided filters. API key must have the `View Notification logs` permission.", + "operationId": "listNotificationRuns", + "parameters": [ + { + "description": "The type of notification.", + "in": "query", + "name": "notificationTypes", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INITIATIVE_CREATION", + "INITIATIVE_CUSTOM_SCHEDULE", + "INITIATIVE_N_DAYS_LEFT", + "SERVICE_REEVALUATED", + "WEEKLY_REPORT", + "BROKEN_OPEN_API_SPEC", + "ENTITLEMENT_EXPIRATION", + "ONCALL_ASSISTANT", + "ONBOARDING_MESSAGE", + "NOTIFY_INVALID_INTEGRATION", + "ONCALL_PERSON_CHANGED", + "ONCALL_STARTS_IN_N_DAYS", + "TEAM_MEMBER_INVITATION", + "PENDING_RULE_EXEMPTION", + "TOKEN_EXPIRES_IN_N_DAYS", + "SCHEDULED_SCORECARD_RULE_CREATION", + "SCORECARD_RULE_ACTIVATES_IN_N_DAYS", + "WORKFLOW_STATUS_UPDATE", + "WORKFLOW_APPROVAL_PENDING", + "VERIFICATION_PERIOD_STARTED", + "VERIFICATION_PERIOD_REMINDER", + "AI_ASSISTANT_WELCOME_MESSAGE", + "ENTITY_SCORE_DROPPED", + "ONBOARDING_WIZARD_STATE_COMPLETED", + "EXPORT_COMPLETED", + "OPEX_COMMENT_MENTION", + "OPEX_COMMENT_THREAD_ACTIVITY" + ] + } + } + }, + { + "description": "The status of the notification.", + "in": "query", + "name": "statuses", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CREATED", + "FAILED", + "IGNORED", + "COMPLETED", + "COMPLETED_WITH_ERRORS" + ] + } + } + }, + { + "description": "The medium used to send the notification.", + "in": "query", + "name": "mediums", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SLACK", + "MICROSOFT_TEAMS", + "EMAIL", + "WEBHOOK" + ] + } + } + }, + { + "description": "The reason why a notification run was ignored.", + "in": "query", + "name": "ignoredReasons", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SCORECARD_DISABLED", + "WORKSPACE_DISABLED", + "NO_RECIPIENTS" + ] + } + } + }, + { + "description": "The reason why a notification run failed.", + "in": "query", + "name": "failedReasons", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PACKET_GENERATOR_ERROR", + "CONTEXT_RESOLUTION_ERROR", + "INTERNAL_ERROR" + ] + } + } + }, + { + "description": "Whether to include the objects associated with the notification run.", + "in": "query", + "name": "includeObjects", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "The ISO date and time to start the search from.", + "example": "2021-01-01T00:00:00", + "in": "query", + "name": "fromDate", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "description": "The ISO date and time to end the search at.", + "example": "2021-01-01T00:00:00", + "in": "query", + "name": "untilDate", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "in": "query", + "name": "deliveredOnly", + "required": false, + "schema": { + "type": "boolean", + "default": true + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Sort the results ascending or descending.", + "in": "query", + "name": "orderBy", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "DESC" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationRunResponse" + } + } + }, + "description": "Successfully retrieved notification runs" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve notification runs", + "tags": [ + "Notification Logs" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/okta/configuration": { + "post": { + "operationId": "OktaSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OktaConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseOktaConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Okta" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "OktaReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OktaConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseOktaConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Okta" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/okta/configuration/validate": { + "post": { + "operationId": "OktaValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Okta" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/okta/configurations": { + "delete": { + "operationId": "OktaDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseOktaConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Okta" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/okta/default-configuration": { + "get": { + "operationId": "OktaGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OktaConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Okta" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/open-api": { + "patch": { + "description": "Creates or updates an entity using OpenAPI. If the YAML refers to an entity that already exists (as referenced by the `x-cortex-tag`), this API will merge the specified changes into the existing entity.", + "operationId": "createOrPatchEntity", + "parameters": [ + { + "description": "When true, this endpoint only validates the descriptor contents and returns any errors or warnings.", + "in": "query", + "name": "dryRun", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Delete keys with this value from the merged yaml, e.g. `__delete__`, if any values match this, they will not be included in merged YAML. For example `my_value: __delete__` will remove `my_value` from the merged YAML.", + "in": "query", + "name": "deleteMarkerValue", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Default merge behavior is to replace arrays, set this to true to append arrays instead. For simple types, duplicate values will be removed from the merged array.", + "in": "query", + "name": "appendArrays", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Default behavior is to upsert the entity, set `failIfEntityDoesNotExist\u003dtrue` to fail (404) if the entity specified in `x-cortex-tag` does not exist.", + "in": "query", + "name": "failIfEntityDoesNotExist", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Maximum time (milliseconds) to wait for asynchronous property updates. Default is zero.", + "in": "query", + "name": "asyncUpdateWaitTimeMs", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/openapi;charset\u003dUTF-8": { + "schema": { + "type": "string" + } + } + }, + "description": "Raw text of the YAML \n See examples of cortex.yaml files for each entity type [here](https://docs.cortex.io/docs/reference/basics/entities#example-cortexyaml-for-service-entity)" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenApiResponse" + } + } + }, + "description": "Indicates that the entity body was accepted, and the referenced `x-cortex-tag` existed and patched successfully" + }, + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenApiResponse" + } + } + }, + "description": "Indicates that the entity body was accepted, and the referenced `x-cortex-tag` did not exist and was created successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenApiResponse" + } + } + }, + "description": "Invalid YAML (major errors or incorrectly formatted YAML)" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenApiResponse" + } + } + }, + "description": "Specified entity does not exist (when failIfDoesNotExist is set to true)" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create or patch entity", + "tags": [ + "Catalog Entities" + ], + "x-cortex-mcp-description": "Merge a partial YAML descriptor (tag at info.x-cortex-tag) into an existing entity. Keys you leave out are kept. If no entity has that tag, it is created, unless failIfEntityDoesNotExist\u003dtrue, which returns 404 instead. Arrays are replaced by default; pass appendArrays\u003dtrue to add to them. To remove a key, set its value to the string given in deleteMarkerValue (e.g. `__delete__`). Pass dryRun\u003dtrue to only validate. Use createOrUpdateEntity to replace the whole descriptor.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create a catalog entity using a descriptor YAML. By default (UPSERT mode), if the entity already exists (as referenced by the `x-cortex-tag`), this API will update the existing entity. In CREATE mode, the API will fail if the entity already exists.", + "operationId": "createOrUpdateEntity", + "parameters": [ + { + "description": "When true, this endpoint only validates the descriptor contents and returns any errors or warnings.", + "in": "query", + "name": "dryRun", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Add a comment with validation errors on the pull request with the given ID", + "in": "query", + "name": "githubPullRequest", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "description": "Mode of operation: UPSERT (default) creates or updates existing entity, CREATE fails if entity already exists.", + "in": "query", + "name": "mode", + "required": false, + "schema": { + "type": "string", + "enum": [ + "UPSERT", + "CREATE" + ] + } + }, + { + "description": "Maximum time (milliseconds) to wait for asynchronous property updates. Default is zero.", + "in": "query", + "name": "asyncUpdateWaitTimeMs", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/openapi;charset\u003dUTF-8": { + "schema": { + "type": "string" + } + } + }, + "description": "Raw text of the YAML \n See examples of cortex.yaml files for each entity type [here](https://docs.cortex.io/docs/reference/basics/entities#example-cortexyaml-for-service-entity)" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenApiResponse" + } + } + }, + "description": "Indicates that the entity was accepted and processed successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenApiResponse" + } + } + }, + "description": "Invalid YAML (major errors or incorrectly formatted YAML)" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create or update entity", + "tags": [ + "Catalog Entities" + ], + "x-cortex-mcp-description": "Create a catalog entity from a full YAML descriptor (OpenAPI-style, with the tag at info.x-cortex-tag), or update the entity that already has that tag. An update replaces the whole descriptor, so any key you leave out is removed. To change only some fields, use createOrPatchEntity. Pass mode\u003dCREATE to fail instead of overwriting an existing entity. Pass dryRun\u003dtrue to only validate the descriptor and see its errors and warnings.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/opsgenie/configuration": { + "post": { + "operationId": "OpsgenieSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpsgenieConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseOpsgenieConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Opsgenie" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "OpsgenieReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpsgenieConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseOpsgenieConfiguration" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Opsgenie" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/opsgenie/configuration/validate": { + "post": { + "operationId": "OpsgenieValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Opsgenie" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/opsgenie/configurations": { + "delete": { + "operationId": "OpsgenieDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseOpsgenieConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Opsgenie" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/opsgenie/default-configuration": { + "get": { + "operationId": "OpsgenieGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpsgenieConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Opsgenie" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/pagerduty/configuration": { + "post": { + "operationId": "PagerDutySaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagerdutyConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePagerdutyConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] PagerDuty" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "PagerDutyReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagerdutyConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePagerdutyConfiguration" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] PagerDuty" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/pagerduty/configuration/validate": { + "post": { + "operationId": "PagerDutyValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] PagerDuty" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/pagerduty/configurations": { + "delete": { + "operationId": "PagerDutyDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePagerdutyConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] PagerDuty" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/pagerduty/default-configuration": { + "get": { + "operationId": "PagerDutyGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagerdutyConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] PagerDuty" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/plugins": { + "get": { + "description": "Retrieve a list of all plugins, excluding drafts", + "operationId": "listAllPlugins", + "parameters": [ + { + "in": "query", + "name": "includeDrafts", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PluginsMetadataResponse" + } + } + }, + "description": "List of plugins" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Get all plugins", + "tags": [ + "Plugins" + ], + "x-cortex-mcp-description": "List the plugins installed in Cortex, with their tags, names and contexts. Use getPluginByTag for one plugin\u0027s full definition, including its HTML source.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create a new plugin", + "operationId": "createPlugin", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePluginRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PluginMetadata" + } + } + }, + "description": "Metadata of the created plugin" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create a plugin", + "tags": [ + "Plugins" + ], + "x-cortex-mcp-description": "Create a plugin from its HTML source (blob), with tag, name, contexts (where it shows up, for example {\"type\":\"GLOBAL\"}), minimumRoleRequired, isDraft, and optional proxyTag, iconTag and version. Fails if the tag already exists; to change a plugin use updatePlugin or patchPlugin.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/plugins/{tag}": { + "delete": { + "description": "Delete a plugin by tag", + "operationId": "deletePlugin", + "parameters": [ + { + "description": "Unique identifier for the plugin", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Plugin deleted" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Plugin not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a plugin", + "tags": [ + "Plugins" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "description": "Retrieve the metadata of a plugin by tag", + "operationId": "getPluginByTag", + "parameters": [ + { + "description": "Unique identifier for the plugin", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "When true, returns the plugin blob. Defaults to false.", + "in": "query", + "name": "includeBlob", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PluginMetadataWithBlob" + } + } + }, + "description": "Metadata of the plugin" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Plugin not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Get plugin by tag", + "tags": [ + "Plugins" + ], + "x-cortex-mcp-description": "Get one plugin\u0027s full definition by tag, including its HTML source (blob). Read this before updatePlugin, which replaces the whole plugin.", + "x-cortex-mcp-enabled": "true" + }, + "patch": { + "description": "Partially update plugin by tag", + "operationId": "patchPlugin", + "parameters": [ + { + "description": "Unique identifier for the plugin", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PatchPluginRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PluginMetadataWithBlob" + } + } + }, + "description": "Plugin updated successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid input, such as malformed tag or invalid metadata" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Plugin with the specified tag not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Patch a plugin", + "tags": [ + "Plugins" + ], + "x-cortex-mcp-description": "Change only the fields you send on a plugin, found by tag. Omitted fields stay as they are, and an explicit null clears a field that can be null. The response includes the HTML blob only if the blob was changed. Returns 404 if the plugin does not exist. To replace the whole plugin, use updatePlugin.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "description": "Replace an existing plugin by tag", + "operationId": "updatePlugin", + "parameters": [ + { + "description": "Unique identifier for the plugin", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePluginRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PluginMetadata" + } + } + }, + "description": "Metadata of the replaced plugin" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Invalid request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Plugin not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Replace a plugin", + "tags": [ + "Plugins" + ], + "x-cortex-mcp-description": "Replace a plugin, found by tag, with the full definition in the request, including its HTML blob. Fields you omit that can be null are cleared. Returns 404 if the plugin does not exist. To change only some fields, use patchPlugin.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/prometheus/configuration": { + "post": { + "operationId": "PrometheusSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrometheusConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/prometheus/configuration/validate": { + "post": { + "operationId": "PrometheusValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/prometheus/configuration/validate/{alias}": { + "post": { + "operationId": "PrometheusValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/prometheus/configuration/{alias}": { + "delete": { + "operationId": "PrometheusRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "PrometheusGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrometheusConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "PrometheusUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrometheusUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/prometheus/configurations": { + "delete": { + "operationId": "PrometheusRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "PrometheusListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "PrometheusSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestPrometheusConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponsePrometheusConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/prometheus/default-configuration": { + "get": { + "operationId": "PrometheusGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrometheusConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Prometheus" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/queries": { + "post": { + "description": "Run a CQL query. For more information about the types of queries you can run, take a look at our CQL Explorer in the app.", + "operationId": "createQuery", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryResponse" + } + } + }, + "description": "Successfully submitted query" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad request" + }, + "409": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Conflict" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Run query", + "tags": [ + "Queries" + ], + "x-cortex-mcp-description": "Submit a CQL query to run in the background over every catalog entity. The query must return a boolean for each entity, and the entities where it is true are the matches. Returns a jobId immediately, not results; fetch the status and matching entities with getQueryResults(jobId). Returns 409 if the same query is already running.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/queries/{jobId}": { + "get": { + "description": "Retrieve the status and results of a CQL query", + "operationId": "getQueryResults", + "parameters": [ + { + "description": "jobId of the query to retrieve", + "in": "path", + "name": "jobId", + "required": true, + "schema": { + "type": "string", + "description": "jobId of the query to retrieve" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryBuilderResult" + } + } + }, + "description": "Successfully found query" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Query not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve query results", + "tags": [ + "Queries" + ], + "x-cortex-mcp-description": "Get the status of a CQL query job started with createQuery, by jobId. Once the job is done, returns the entities the query matched.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/relationship-types": { + "get": { + "description": "List paginated relationship types", + "operationId": "listRelationshipTypes", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedEntityRelationshipTypeResponse" + } + } + }, + "description": "Successfully found entity relationship types" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List relationship types", + "tags": [ + "Entity Relationship Types" + ], + "x-cortex-mcp-description": "List all available relationship types with pagination. View relationship type configurations to understand what kinds of relationships can be created between entities like services, resources, domains, and teams.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create a relationship type", + "operationId": "createRelationshipType", + "requestBody": { + "content": { + "application/json": { + "examples": { + "Entity Relationship Type Example": { + "description": "Entity Relationship Type Example", + "summary": "Creates a relationship type that groups services into components", + "value": "{\n \"name\": \"Component Hierarchy\",\n \"tag\": \"component-hierarchy\",\n \"description\": \"Defines the component hierarchy.\",\n \"definitionLocation\": \"BOTH\",\n \"isSingleSource\": true,\n \"sourcesFilter\": {\n \"include\": true,\n \"types\": [\"component\"]\n },\n \"isSingleDestination\": false,\n \"destinationsFilter\": {\n \"include\": true,\n \"types\": [\"service\", \"component]\n },\n \"inheritances\": [\n {\n \"parameterTag\": \"x-cortex-owners\",\n \"inheritanceType\": \"FALLBACK\"\n }\n ],\n \"allowCycles\": false,\n \"sourceLabelSingular\": \"Component\",\n \"sourceLabelPlural\": \"Components\",\n \"destinationLabelSingular\": \"Part\",\n \"destinationLabelPlural\": \"Parts\",\n \"createCatalog\": false\n }" + } + }, + "schema": { + "$ref": "#/components/schemas/EntityRelationshipTypeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationshipTypeResponse" + } + } + }, + "description": "Successfully created relationship type" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Validation error creating relationship type" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create relationship type", + "tags": [ + "Entity Relationship Types" + ], + "x-cortex-mcp-description": "Create a relationship type. Set its tag and name, the entity types allowed as sources and as destinations, single-source and single-destination limits, whether cycles are allowed, where relationships can be defined (definitionLocation), and the parameters entities inherit through it. Pass createCatalog\u003dtrue to also create a catalog page for it. To change an existing type, use updateRelationshipType.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/relationship-types/{relationshipTypeTag}": { + "delete": { + "description": "Delete a relationship type", + "operationId": "deleteRelationshipType", + "parameters": [ + { + "in": "path", + "name": "relationshipTypeTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully deleted relationship type" + }, + "204": { + "description": "No Content" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Validation error deleting relationship type" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a relationship type", + "tags": [ + "Entity Relationship Types" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "description": "List details for a relationship type", + "operationId": "getRelationshipTypeDetails", + "parameters": [ + { + "in": "path", + "name": "relationshipTypeTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationshipTypeResponse" + } + } + }, + "description": "Successfully found relationship type" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Relationship type not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Get a relationship type", + "tags": [ + "Entity Relationship Types" + ], + "x-cortex-mcp-description": "Get complete details of a specific relationship type including its configuration, rules, source/destination filters, and inheritance settings. Essential for understanding how entities can be connected and what validation rules apply.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "description": "Update relationship type", + "operationId": "updateRelationshipType", + "parameters": [ + { + "in": "path", + "name": "relationshipTypeTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationshipTypeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntityRelationshipTypeResponse" + } + } + }, + "description": "Successfully updated relationship type" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Validation error updating relationship type" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update relationship type", + "tags": [ + "Entity Relationship Types" + ], + "x-cortex-mcp-description": "Replace the configuration of an existing relationship type, found by its tag. The request body is the full definition, and fields you leave out are not kept. Relationship types managed by Cortex cannot be changed. Read the current configuration with getRelationshipTypeDetails first.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/relationships/{relationshipTypeTag}": { + "get": { + "description": "List all entity relationships for a certain relationship type.", + "operationId": "listEntityRelationships", + "parameters": [ + { + "in": "path", + "name": "relationshipTypeTag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListRelationships" + } + } + }, + "description": "Successfully retrieved entity relationships" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Relationship type not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List entity relationships for a relationship type", + "tags": [ + "Entity Relationships" + ], + "x-cortex-mcp-description": "List all entity relationships for a specific relationship type across the entire organization. Returns paginated results showing all source-destination pairs, useful for understanding the complete relationship graph and finding all connections of a particular type.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Add all entity relationships for a certain relationship type.", + "operationId": "addEntityRelationships", + "parameters": [ + { + "in": "path", + "name": "relationshipTypeTag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateEntityRelationships" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkUpdateEntityRelationshipsResponse" + } + } + }, + "description": "Successfully added entity relationships" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Relationship type not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add entity relationships for a relationship type", + "tags": [ + "Entity Relationships" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "Update all entity relationships for a certain relationship type.", + "operationId": "updateEntityRelationships", + "parameters": [ + { + "in": "path", + "name": "relationshipTypeTag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "in": "query", + "name": "force", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateEntityRelationships" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkUpdateEntityRelationshipsResponse" + } + } + }, + "description": "Successfully updated entity relationships" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Relationship type not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update entity relationships for a relationship type", + "tags": [ + "Entity Relationships" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rollbar/configuration": { + "post": { + "operationId": "RollbarSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RollbarConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRollbarConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Rollbar" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "RollbarReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RollbarConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRollbarConfiguration" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Rollbar" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rollbar/configuration/validate": { + "post": { + "operationId": "RollbarValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Rollbar" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rollbar/configurations": { + "delete": { + "operationId": "RollbarDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRollbarConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Rollbar" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rollbar/default-configuration": { + "get": { + "operationId": "RollbarGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RollbarConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Rollbar" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rootly/configuration": { + "post": { + "operationId": "RootlySaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootlyConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRootlyConfiguration" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Rootly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rootly/configuration/{alias}": { + "delete": { + "operationId": "RootlyRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRootlyConfiguration" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration by alias", + "tags": [ + "[Integrations] Rootly" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "RootlyGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootlyConfiguration" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration by alias", + "tags": [ + "[Integrations] Rootly" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "RootlyUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootlyUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRootlyConfiguration" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Rootly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rootly/configurations": { + "get": { + "operationId": "RootlyGetConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseRootlyConfiguration" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve all configurations", + "tags": [ + "[Integrations] Rootly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/rootly/default-configuration": { + "get": { + "operationId": "RootlyGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootlyConfiguration" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Rootly" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/scaffolders": { + "get": { + "description": "List Scaffolder templates.", + "operationId": "listScaffolders", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScaffolderListResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ScaffolderListResponse" + } + } + }, + "description": "Successfully found Scaffolder templates" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Access denied" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List Scaffolder templates", + "tags": [ + "Scaffolder" + ], + "x-cortex-mcp-description": "List the Scaffolder templates configured in Cortex, with their tags. Use getScaffolder for one template\u0027s full configuration.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create or update a Scaffolder template.\n\nAPI key must have the `Configure Scaffolder` permission.\n\n**Note:** If a Scaffolder template with the same tag already exists, it will be updated.", + "operationId": "createOrUpdateScaffolder", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScaffolderRequest" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ScaffolderRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + } + }, + "description": "Scaffolder template created or updated successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Access denied" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create or update Scaffolder template", + "tags": [ + "Scaffolder" + ], + "x-cortex-mcp-description": "Create a Scaffolder template, or replace the one with the same tag. The request needs name and repoLocator; fields you omit go back to their defaults and are not merged. Without a tag a new template is always created, with a tag derived from the name. Needs the Configure Scaffolder permission. To update by Cortex ID or to rename a tag, use updateScaffolder.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scaffolders/{tagOrId}": { + "delete": { + "description": "Delete a Scaffolder template by tag or Cortex ID.\n\nAPI key must have the `Configure Scaffolder` permission.", + "operationId": "deleteScaffolder", + "parameters": [ + { + "description": "The tag or unique, auto-generated Cortex ID of the Scaffolder template.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "responses": { + "204": { + "description": "Scaffolder template deleted successfully" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Access denied" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scaffolder template not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete Scaffolder template", + "tags": [ + "Scaffolder" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "description": "Retrieve a Scaffolder template by tag or Cortex ID.", + "operationId": "getScaffolder", + "parameters": [ + { + "description": "The tag or unique, auto-generated Cortex ID of the Scaffolder template.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + } + }, + "description": "Successfully found the Scaffolder template" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Access denied" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scaffolder template not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve Scaffolder template", + "tags": [ + "Scaffolder" + ], + "x-cortex-mcp-description": "Get one Scaffolder template\u0027s full configuration by tag or Cortex ID. Read this before updateScaffolder, which replaces the whole template.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "description": "Update a Scaffolder template by tag or Cortex ID.\n\nAPI key must have the `Configure Scaffolder` permission.", + "operationId": "updateScaffolder", + "parameters": [ + { + "description": "The tag or unique, auto-generated Cortex ID of the Scaffolder template.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScaffolderRequest" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ScaffolderRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + } + }, + "description": "Scaffolder template updated successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Access denied" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scaffolder template not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update Scaffolder template", + "tags": [ + "Scaffolder" + ], + "x-cortex-mcp-description": "Replace an existing Scaffolder template, found by tag or Cortex ID, with the request body. Fields you omit go back to their defaults and are not merged, so read the template with getScaffolder first. Passing a new tag renames the template. Needs the Configure Scaffolder permission.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards": { + "get": { + "description": "Returns scorecards matching optional search criteria. If search criteria is specified we will use search logic, which will not find Scorecards that have yet to be evaluated", + "operationId": "listScorecards", + "parameters": [ + { + "in": "query", + "name": "showDrafts", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter based on groups, which correspond to the `x-cortex-groups` field in the Catalog Descriptor. Accepts a comma-delimited list of groups", + "in": "query", + "name": "groups", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Filter based on entity (either tags or CIDs). Accepts a comma-delimited list of entity tag or CIDs, please use only one type of identifier", + "in": "query", + "name": "entities", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + }, + { + "description": "Filter based on team (either tags or CIDs). Accepts a comma-delimited list of team tag or CIDs, please use only one type of identifier", + "in": "query", + "name": "teams", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedScorecardsResponse" + } + } + }, + "description": "OK" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List Scorecards", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "List all scorecards in the organization with optional filtering. View scorecard configurations to understand quality standards, compliance requirements, and maturity models. Supports filtering by groups, entities, and teams to find relevant scorecards.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/descriptor": { + "post": { + "description": "Create or update a Scorecard using the descriptor YAML. The operation is determined by the existence of a Scorecard with the same `tag` as passed in the descriptor.", + "operationId": "createOrUpdateScorecard", + "parameters": [ + { + "description": "When true, this endpoint only validates the descriptor contents and returns any errors or warnings.", + "in": "query", + "name": "dryRun", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/yaml;charset\u003dUTF-8": { + "schema": { + "type": "string" + } + } + }, + "description": "Raw text of the YAML \n See an example of a yaml file for scorecards [here](https://docs.cortex.io/docs/reference/basics/scorecards#descriptor)" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScorecardDescriptorResponse" + } + } + }, + "description": "Created Scorecard" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create or update Scorecard", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Create a Scorecard from a raw YAML descriptor, or update the existing Scorecard if one with the descriptor\u0027s `tag` already exists. An update replaces the whole definition (rules, levels, filter) with the descriptor and does not merge fields, so call getScorecard(tag) first and send back the complete definition. Pass dryRun\u003dtrue to parse and validate the YAML without saving anything.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/exemptions": { + "get": { + "description": "List rule exemptions across Scorecards, newest first. Callers with permission to view Scorecard exemptions see every exemption; other users see only the exemptions they requested.", + "operationId": "listScorecardRuleExemptions", + "parameters": [ + { + "description": "Only return exemptions for the Scorecard with this tag", + "in": "query", + "name": "scorecardTag", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only return exemptions for the entity with this tag (`x-cortex-tag`)", + "in": "query", + "name": "entityTag", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only return exemptions for the rule with this identifier. Requires `scorecardTag`", + "in": "query", + "name": "ruleIdentifier", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only return exemptions with this status. APPROVED excludes approvals past their end date, which are returned as EXPIRED.", + "in": "query", + "name": "status", + "required": false, + "schema": { + "type": "string", + "enum": [ + "PENDING", + "APPROVED", + "REJECTED", + "REVOKED", + "EXPIRED" + ] + } + }, + { + "description": "Only return exemptions requested by the user with this email", + "in": "query", + "name": "requesterEmail", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only return exemptions approved by the user with this email", + "in": "query", + "name": "approverEmail", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only return exemptions that are pending, or approved and not yet expired. Default false.", + "in": "query", + "name": "onlyActive", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedRuleExemptionsResponse" + } + } + }, + "description": "Successfully retrieved Scorecard rule exemptions" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Rule identifier was provided without a Scorecard tag, EXPIRED status was combined with onlyActive, or the requested page starts beyond the first 100,000 results" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "API key without permission to view Scorecard exemptions and not tied to a user" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List Scorecard rule exemptions", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "List Scorecard rule exemptions, newest first, with their status, requester, approver and expiry. Filter by Scorecard tag, entity tag, rule identifier, status, requester or approver email, or only exemptions currently in effect; a rule identifier needs a Scorecard tag. Callers who can view Scorecard exemptions see every exemption; other callers see only the exemptions they requested.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{scorecardTag}/entity/{tagOrId}/badge": { + "get": { + "operationId": "getBadgeMarkdown", + "parameters": [ + { + "description": "Unique tag for the Scorecard.", + "in": "path", + "name": "scorecardTag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScorecardShieldsBadgeMarkdown" + } + } + }, + "description": "Shields.io badge" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Entity or Scorecard not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve Scorecard shields.io badge", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/scorecards/{tag}": { + "delete": { + "operationId": "deleteScorecard", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully deleted Scorecard" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete Scorecard", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Delete a scorecard. Disabled for MCP access as removing scorecards affects historical tracking and compliance reporting", + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "getScorecard", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScorecardDescriptorResponse" + } + } + }, + "description": "Successfully retrieved Scorecard" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve Scorecard", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Get complete details of a scorecard including its configuration, rules, levels, weights, exemption settings, and evaluation criteria. Essential for understanding how services are evaluated and what standards they must meet.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/descriptor": { + "get": { + "operationId": "getScorecardDescriptor", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + }, + "description": "Successfully retrieved Scorecard descriptor" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve Scorecard descriptor", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Cortex Scorecards API - Measure and track service quality, compliance, and maturity levels across your organization with customizable scorecards and rules", + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption": { + "post": { + "description": "Request Scorecard rule exemption", + "operationId": "requestScorecardRuleExemption", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "path", + "name": "entityTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleExemptionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleExemptionDefinition" + } + } + }, + "description": "Successfully requested Scorecard rule exemption" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Request Scorecard rule exemption", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Request an exemption for one entity from one Scorecard rule, identified by Scorecard tag, entity tag and ruleIdentifier (call getScorecard to get it). A reason is required. Set `days` for an expiring exemption; leave it out and the exemption lasts until it is revoked. The exemption is approved at once if the caller has Edit Settings or the Scorecard auto-approves exemptions; otherwise it stays PENDING. Fails if the Scorecard has exemptions disabled, or if a pending or active exemption already exists for that rule and entity.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption/approve": { + "put": { + "description": "Approve Scorecard rule exemption", + "operationId": "approveScorecardRuleExemption", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "path", + "name": "entityTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApproveRuleExemptionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModifiedRuleExemptionsResponse" + } + } + }, + "description": "Successfully approved Scorecard rule exemptions" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "No pending exemptions to approve found" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Approve Scorecard rule exemption", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Approve every PENDING exemption for one rule on one entity, identified by Scorecard tag, entity tag and ruleIdentifier. Admin only. Fails with 400 when nothing is pending. Use listScorecardRuleExemptions to review requests before approving them.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption/deny": { + "put": { + "description": "Deny Scorecard rule exemption", + "operationId": "denyScorecardRuleExemption", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "path", + "name": "entityTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejectRuleExemptionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModifiedRuleExemptionsResponse" + } + } + }, + "description": "Denied Scorecard rule exemptions" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "No pending exemptions to approve found" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Deny Scorecard rule exemption", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Deny (reject) every PENDING exemption for one rule on one entity, identified by Scorecard tag, entity tag and ruleIdentifier, with a required reason. Admin only. Fails with 400 when nothing is pending. To remove an exemption that is already approved, use revokeScorecardRuleExemption.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption/revoke": { + "put": { + "description": "Revoke Scorecard rule exemption", + "operationId": "revokeScorecardRuleExemption", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "path", + "name": "entityTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevokeRuleExemptionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModifiedRuleExemptionsResponse" + } + } + }, + "description": "Revoked Scorecard rule exemptions" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "No approved exemptions to revoke found" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Revoke Scorecard rule exemption", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Revoke every APPROVED exemption for one rule on one entity, identified by Scorecard tag, entity tag and ruleIdentifier, with a required reason. The rule applies to the entity again, and the record is kept for audit. Admins or the original requester can revoke. Fails with 400 when no approved exemption exists. Use denyScorecardRuleExemption for a request that is still pending.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/entity/{entityTag}/scores": { + "post": { + "description": "Triggers score evaluation for entity scorecard", + "operationId": "refreshScorecardScoreForEntity", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "path", + "name": "entityTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Scorecard score evaluation triggered successfully" + }, + "403": { + "description": "Unauthorized" + }, + "404": { + "description": "Scorecard not found" + }, + "409": { + "description": "Already evaluating scorecard" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + }, + "500": { + "description": "Scorecard evaluation failed" + } + }, + "summary": "Evaluate entity scorecard score", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Start a re-evaluation of one entity\u0027s score on one Scorecard, identified by Scorecard tag and entity tag. Requires the `Run Scorecards` permission. The call only starts the evaluation and returns no score; read the result afterwards with listScorecardScoresForEntity or getScorecardNextStepsForEntity. Returns 409 if this Scorecard is already being evaluated.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/next-steps": { + "get": { + "operationId": "getScorecardNextStepsForEntity", + "parameters": [ + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", + "in": "query", + "name": "entityTag", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NextSteps1" + } + } + }, + "description": "Any rules remaining for the entity to reach the next level in the Scorecard." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve next steps for entity in Scorecard", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Get actionable next steps for an entity to improve its scorecard performance. Shows which rules need to be satisfied to reach the next maturity level, helping teams prioritize improvements and track progress toward compliance goals.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/scorecards/{tag}/scores": { + "get": { + "description": "Returns latest scores for all entities in the Scorecard", + "operationId": "listScorecardScores", + "parameters": [ + { + "description": "Entity tag (x-cortex-tag)", + "in": "query", + "name": "entityTag", + "schema": { + "type": "string" + } + }, + { + "description": "Unique tag for the Scorecard", + "example": "my-production-readiness-checklist", + "in": "path", + "name": "tag", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScorecardServiceScore" + } + } + }, + "description": "Scorecard scores" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Scorecard not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve Scorecard scores", + "tags": [ + "Scorecards" + ], + "x-cortex-mcp-description": "Retrieve scores for all entities evaluated by a specific scorecard. Returns paginated results showing how each service, resource, or domain performs against the scorecard\u0027s rules, including individual rule scores and overall scorecard scores.\n\nPrefer searchScorecardScores for filter-based questions — listScorecardScores scans page-by-page and is expensive on large scorecards.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/secrets": { + "get": { + "description": "API key must have the `Create secrets` permission.", + "operationId": "listAllSecrets", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllSecretsResponse" + } + } + }, + "description": "Successfully retrieved secrets" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "List secrets", + "tags": [ + "Secrets" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "description": "API key must have the `Create secrets` permission.", + "operationId": "createSecret", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSecretRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecretResponse" + } + } + }, + "description": "Successfully created secret" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Create secret", + "tags": [ + "Secrets" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/secrets/{tagOrId}": { + "delete": { + "description": "API key must have the `Create secrets` permission.", + "operationId": "deleteSecret", + "parameters": [ + { + "description": "The specified secret tag or unique, auto-generated identifier for the secret.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "responses": { + "200": { + "description": "Secret successfully deleted" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Secret not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete secret", + "tags": [ + "Secrets" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "description": "API key must have the `Create secrets` permission.", + "operationId": "getSecret", + "parameters": [ + { + "description": "The specified secret tag or unique, auto-generated identifier for the secret.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecretResponse" + } + } + }, + "description": "Successfully retrieved secret" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Secret not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve secret", + "tags": [ + "Secrets" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "API key must have the `Create secrets` permission.", + "operationId": "updateSecret", + "parameters": [ + { + "description": "The specified secret tag or unique, auto-generated identifier for the secret.", + "in": "path", + "name": "tagOrId", + "required": true, + "schema": { + "type": "string", + "description": "Entity identifier - can be a tag or CID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSecretRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecretResponse" + } + } + }, + "description": "Successfully updated secret" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Secret not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update secret", + "tags": [ + "Secrets" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/semgrep/configuration": { + "post": { + "operationId": "SemgrepSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SemgrepConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSemgrepConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/semgrep/configuration/validate": { + "post": { + "operationId": "SemgrepValidateAllConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate all configurations", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/semgrep/configuration/validate/{alias}": { + "post": { + "operationId": "SemgrepValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/semgrep/configuration/{alias}": { + "delete": { + "operationId": "SemgrepRemoveConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSemgrepConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "SemgrepGetConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SemgrepConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "SemgrepUpdateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SemgrepUpdateConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSemgrepConfiguration" + } + } + }, + "description": "Successfully updated configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update a configuration", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/semgrep/configurations": { + "delete": { + "operationId": "SemgrepRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + }, + "get": { + "operationId": "SemgrepListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSemgrepConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "SemgrepSaveConfigurations", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsRequestSemgrepConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleConfigurationsResponseSemgrepConfiguration" + } + } + }, + "description": "Successfully added configurations" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/semgrep/default-configuration": { + "get": { + "operationId": "SemgrepGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SemgrepConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve default configuration", + "tags": [ + "[Integrations] Semgrep" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sentry/configuration": { + "post": { + "operationId": "SentrySaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SentryConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSentryConfiguration" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] Sentry" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "SentryReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SentryConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSentryConfiguration" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] Sentry" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sentry/configuration/validate": { + "post": { + "operationId": "SentryValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] Sentry" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sentry/configurations": { + "delete": { + "operationId": "SentryDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSentryConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Sentry" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sentry/default-configuration": { + "get": { + "operationId": "SentryGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SentryConfiguration" + } + } + }, + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] Sentry" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/servicenow/configuration": { + "post": { + "operationId": "ServiceNowSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServiceNowConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseServiceNowConfigurationResponse" + } + } + }, + "description": "Successfully added configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] ServiceNow" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "ServiceNowReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServiceNowConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseServiceNowConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Update the existing configuration", + "tags": [ + "[Integrations] ServiceNow" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/servicenow/configuration/validate": { + "post": { + "operationId": "ServiceNowValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, - { - "description": "Sort the results ascending or descending.", - "in": "query", - "name": "orderBy", - "required": false, - "schema": { - "type": "string", - "default": "DESC", - "enum": [ - "ASC", - "DESC" - ] - } + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] ServiceNow" ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/servicenow/configurations": { + "delete": { + "operationId": "ServiceNowDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRunResponse" + "$ref": "#/components/schemas/ConfigurationsResponseServiceNowConfigurationResponse" } } }, - "description": "Successfully retrieved notification runs" + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "403": { "content": { @@ -13391,195 +25934,299 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve notification runs", + "summary": "Delete a configuration", "tags": [ - "Notification Logs" + "[Integrations] ServiceNow" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/open-api": { - "patch": { - "description": "Creates or updates an entity using OpenAPI. If the YAML refers to an entity that already exists (as referenced by the `x-cortex-tag`), this API will merge the specified changes into the existing entity.", - "operationId": "createOrPatchEntity", - "parameters": [ - { - "description": "When true, this endpoint only validates the descriptor contents and returns any errors or warnings.", - "in": "query", - "name": "dryRun", - "required": false, - "schema": { - "type": "boolean" - } + "/api/v1/servicenow/default-configuration": { + "get": { + "operationId": "ServiceNowGetConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServiceNowConfigurationResponse" + } + } + }, + "description": "Successfully found configuration" }, - { - "description": "Delete keys with this value from the merged yaml, e.g. `__delete__`, if any values match this, they will not be included in merged YAML. For example `my_value: __delete__` will remove `my_value` from the merged YAML.", - "in": "query", - "name": "deleteMarkerValue", - "required": false, - "schema": { - "type": "string" - } + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, - { - "description": "Default merge behavior is to replace arrays, set this to true to append arrays instead. For simple types, duplicate values will be removed from the merged array.", - "in": "query", - "name": "appendArrays", - "required": false, - "schema": { - "type": "boolean" - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, - { - "description": "Default behavior is to upsert the entity, set `failIfEntityDoesNotExist\u003dtrue` to fail (404) if the entity specified in `x-cortex-tag` does not exist.", - "in": "query", - "name": "failIfEntityDoesNotExist", - "required": false, - "schema": { - "type": "boolean" - } + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Retrieve a configuration", + "tags": [ + "[Integrations] ServiceNow" ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/signalfx/configuration": { + "post": { + "operationId": "SignalFxSaveConfiguration", "requestBody": { "content": { - "application/openapi;charset\u003dUTF-8": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignalFxConfigurationRequest" + } + } }, - "description": "Raw text of the YAML \n See examples of cortex.yaml files for each entity type [here](https://docs.cortex.io/docs/reference/basics/entities#example-cortexyaml-for-service-entity)" + "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/ConfigurationsResponseSignalFxConfigurationResponse" } } }, - "description": "Indicates that the entity body was accepted, and the referenced `x-cortex-tag` existed and patched successfully" + "description": "Successfully added configuration" }, - "201": { + "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Indicates that the entity body was accepted, and the referenced `x-cortex-tag` did not exist and was created successfully" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add a configuration", + "tags": [ + "[Integrations] SignalFx" + ], + "x-cortex-mcp-enabled": "false" + }, + "put": { + "operationId": "SignalFxReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignalFxConfigurationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSignalFxConfigurationResponse" + } + } + }, + "description": "Successfully updates configuration" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Invalid YAML (major errors or incorrectly formatted YAML)" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Specified entity does not exist (when failIfDoesNotExist is set to true)" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create or patch entity", + "summary": "Update the existing configuration", "tags": [ - "Catalog Entities" + "[Integrations] SignalFx" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/signalfx/configuration/validate": { "post": { - "description": "Create a catalog entity using a descriptor YAML. By default (UPSERT mode), if the entity already exists (as referenced by the `x-cortex-tag`), this API will update the existing entity. In CREATE mode, the API will fail if the entity already exists.", - "operationId": "createOrUpdateEntity", - "parameters": [ - { - "description": "When true, this endpoint only validates the descriptor contents and returns any errors or warnings.", - "in": "query", - "name": "dryRun", - "required": false, - "schema": { - "type": "boolean" - } + "operationId": "SignalFxValidateConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" }, - { - "description": "Add a comment with validation errors on the pull request with the given ID", - "in": "query", - "name": "githubPullRequest", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, - { - "description": "Mode of operation: UPSERT (default) creates or updates existing entity, CREATE fails if entity already exists.", - "in": "query", - "name": "mode", - "required": false, - "schema": { - "type": "string", - "enum": [ - "UPSERT", - "CREATE" - ] - } + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Validate a configuration", + "tags": [ + "[Integrations] SignalFx" ], - "requestBody": { - "content": { - "application/openapi;charset\u003dUTF-8": {} + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/signalfx/configurations": { + "delete": { + "operationId": "SignalFxDeleteConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSignalFxConfigurationResponse" + } + } + }, + "description": "Successfully deleted configuration" }, - "description": "Raw text of the YAML \n See examples of cortex.yaml files for each entity type [here](https://docs.cortex.io/docs/reference/basics/entities#example-cortexyaml-for-service-entity)" + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] SignalFx" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/signalfx/default-configuration": { + "get": { + "operationId": "SignalFxGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/SignalFxConfigurationResponse" } } }, - "description": "Indicates that the entity was accepted and processed successfully" + "description": "Successfully found configuration" }, "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Invalid YAML (major errors or incorrectly formatted YAML)" + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create or update entity", + "summary": "Retrieve a configuration", "tags": [ - "Catalog Entities" + "[Integrations] SignalFx" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/pagerduty/configuration": { + "/api/v1/snyk/configuration": { "post": { - "operationId": "PagerDutySaveConfiguration", + "operationId": "SnykSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagerdutyConfigurationRequest" + "$ref": "#/components/schemas/SnykConfigurationRequest" } } }, @@ -13590,7 +26237,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePagerdutyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseSnykConfigurationResponse" } } }, @@ -13622,17 +26269,17 @@ }, "summary": "Add a configuration", "tags": [ - "[Integrations] PagerDuty" + "[Integrations] Snyk" ], "x-cortex-mcp-enabled": "false" }, "put": { - "operationId": "PagerDutyReplaceConfiguration", + "operationId": "SnykReplaceConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagerdutyConfigurationRequest" + "$ref": "#/components/schemas/SnykConfigurationRequest" } } }, @@ -13643,11 +26290,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePagerdutyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseSnykConfigurationResponse" } } }, - "description": "Successfully replaces configuration" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -13673,16 +26320,16 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Replace the existing configuration", + "summary": "Update the existing configuration", "tags": [ - "[Integrations] PagerDuty" + "[Integrations] Snyk" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/pagerduty/configuration/validate": { + "/api/v1/snyk/configuration/validate": { "post": { - "operationId": "PagerDutyValidateConfiguration", + "operationId": "SnykValidateConfiguration", "responses": { "200": { "content": { @@ -13710,20 +26357,20 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] PagerDuty" + "[Integrations] Snyk" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/pagerduty/configurations": { + "/api/v1/snyk/configurations": { "delete": { - "operationId": "PagerDutyDeleteConfiguration", + "operationId": "SnykDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePagerdutyConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseSnykConfigurationResponse" } } }, @@ -13755,20 +26402,20 @@ }, "summary": "Delete a configuration", "tags": [ - "[Integrations] PagerDuty" + "[Integrations] Snyk" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/pagerduty/default-configuration": { + "/api/v1/snyk/default-configuration": { "get": { - "operationId": "PagerDutyGetConfiguration", + "operationId": "SnykGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagerdutyConfiguration" + "$ref": "#/components/schemas/SnykConfigurationResponse" } } }, @@ -13800,93 +26447,126 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] PagerDuty" + "[Integrations] Snyk" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/plugins": { - "get": { - "description": "Retrieve a list of all plugins, excluding drafts", - "operationId": "listAllPlugins", - "parameters": [ - { - "in": "query", - "name": "includeDrafts", - "required": false, - "schema": { - "type": "boolean" + "/api/v1/sonarqube/configuration": { + "post": { + "operationId": "SonarQubeSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SonarqubeConfigurationRequest" + } } }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + } + } + }, + "description": "Successfully added configuration" }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Add a single configuration", + "tags": [ + "[Integrations] SonarQube" ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sonarqube/configuration/validate": { + "post": { + "operationId": "SonarQubeValidateAllConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PluginsMetadataResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "List of plugins" + "description": "Successfully validated all configurations" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get all plugins", + "summary": "Validate all configurations", "tags": [ - "Plugins" + "[Integrations] SonarQube" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/sonarqube/configuration/validate/{alias}": { "post": { - "description": "Create a new plugin", - "operationId": "createPlugin", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreatePluginRequest" - } + "operationId": "SonarQubeValidateConfiguration", + "parameters": [ + { + "in": "path", + "name": "alias", + "required": true, + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PluginMetadata" + "$ref": "#/components/schemas/IntegrationConfigValidation" } } }, - "description": "Metadata of the created plugin" + "description": "Successfully validated configuration" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -13894,28 +26574,26 @@ } } }, - "description": "Invalid request" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create a plugin", + "summary": "Validate a configuration", "tags": [ - "Plugins" + "[Integrations] SonarQube" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/plugins/{tag}": { + "/api/v1/sonarqube/configuration/{alias}": { "delete": { - "description": "Delete a plugin by tag", - "operationId": "deletePlugin", + "operationId": "SonarQubeRemoveConfiguration", "parameters": [ { - "description": "Unique identifier for the plugin", "in": "path", - "name": "tag", + "name": "alias", "required": true, "schema": { "type": "string" @@ -13923,8 +26601,35 @@ } ], "responses": { - "204": { - "description": "Plugin deleted" + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + } + } + }, + "description": "Successfully deleted configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "404": { "content": { @@ -13934,40 +26639,28 @@ } } }, - "description": "Plugin not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete a plugin", + "summary": "Delete a configuration", "tags": [ - "Plugins" + "[Integrations] SonarQube" ], "x-cortex-mcp-enabled": "false" }, "get": { - "description": "Retrieve the metadata of a plugin by tag", - "operationId": "getPluginByTag", + "operationId": "SonarQubeGetConfiguration", "parameters": [ { - "description": "Unique identifier for the plugin", "in": "path", - "name": "tag", + "name": "alias", "required": true, "schema": { "type": "string" } - }, - { - "description": "When true, returns the plugin blob. Defaults to false.", - "in": "query", - "name": "includeBlob", - "required": false, - "schema": { - "type": "boolean", - "default": false - } } ], "responses": { @@ -13975,11 +26668,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PluginMetadataWithBlob" + "$ref": "#/components/schemas/SonarqubeConfiguration" } } }, - "description": "Metadata of the plugin" + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -13989,26 +26692,25 @@ } } }, - "description": "Plugin not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get plugin by tag", + "summary": "Retrieve a configuration", "tags": [ - "Plugins" + "[Integrations] SonarQube" ], "x-cortex-mcp-enabled": "false" }, - "patch": { - "description": "Partially update plugin by tag", - "operationId": "patchPlugin", + "put": { + "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", + "operationId": "SonarQubeUpdateConfiguration", "parameters": [ { - "description": "Unique identifier for the plugin", "in": "path", - "name": "tag", + "name": "alias", "required": true, "schema": { "type": "string" @@ -14019,7 +26721,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PatchPluginRequest" + "$ref": "#/components/schemas/SonarqubeUpdateConfigurationRequest" } } }, @@ -14030,11 +26732,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PluginMetadataWithBlob" + "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" } } }, - "description": "Plugin updated successfully" + "description": "Successfully updated configuration" }, "400": { "content": { @@ -14044,7 +26746,17 @@ } } }, - "description": "Invalid input, such as malformed tag or invalid metadata" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "404": { "content": { @@ -14054,37 +26766,96 @@ } } }, - "description": "Plugin with the specified tag not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Patch a plugin", + "summary": "Update a configuration", "tags": [ - "Plugins" + "[Integrations] SonarQube" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sonarqube/configurations": { + "delete": { + "operationId": "SonarQubeRemoveAllConfigurations", + "responses": { + "200": { + "description": "Successfully deleted all configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Delete all configurations", + "tags": [ + "[Integrations] SonarQube" ], "x-cortex-mcp-enabled": "false" }, - "put": { - "description": "Replace an existing plugin by tag", - "operationId": "updatePlugin", - "parameters": [ - { - "description": "Unique identifier for the plugin", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } + "get": { + "operationId": "SonarQubeListConfigurations", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + } + } + }, + "description": "Successfully found configurations" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Retrieve configurations", + "tags": [ + "[Integrations] SonarQube" ], + "x-cortex-mcp-enabled": "false" + }, + "post": { + "operationId": "SonarQubeSaveConfigurations", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdatePluginRequest" + "$ref": "#/components/schemas/ConfigurationsRequestSonarqubeConfigurationRequest" } } }, @@ -14095,13 +26866,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PluginMetadata" + "$ref": "#/components/schemas/MultipleConfigurationsResponseSonarqubeConfiguration" } } }, - "description": "Metadata of the replaced plugin" + "description": "Successfully added configurations" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -14109,9 +26880,34 @@ } } }, - "description": "Invalid request" + "description": "Forbidden" }, - "404": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Add multiple configurations", + "tags": [ + "[Integrations] SonarQube" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/sonarqube/default-configuration": { + "get": { + "operationId": "SonarQubeGetDefaultConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SonarqubeConfiguration" + } + } + }, + "description": "Successfully found default configuration" + }, + "400": { "content": { "application/json": { "schema": { @@ -14119,27 +26915,27 @@ } } }, - "description": "Plugin not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Replace a plugin", + "summary": "Retrieve default configuration", "tags": [ - "Plugins" + "[Integrations] SonarQube" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/prometheus/configuration": { + "/api/v1/sumologic/configuration": { "post": { - "operationId": "PrometheusSaveConfiguration", + "operationId": "SumoLogicSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PrometheusConfigurationRequest" + "$ref": "#/components/schemas/SumoLogicConfigurationRequest" } } }, @@ -14150,7 +26946,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseSumoLogicConfigurationResponse" } } }, @@ -14180,28 +26976,36 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "Add a configuration", "tags": [ - "[Integrations] Prometheus" + "[Integrations] SumoLogic" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/prometheus/configuration/validate": { - "post": { - "operationId": "PrometheusValidateAllConfigurations", + }, + "put": { + "operationId": "SumoLogicReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SumoLogicConfigurationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + "$ref": "#/components/schemas/ConfigurationsResponseSumoLogicConfigurationResponse" } } }, - "description": "Successfully validated all configurations" + "description": "Successfully updates configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -14209,38 +27013,38 @@ } } }, - "description": "Configuration not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "Update the existing configuration", "tags": [ - "[Integrations] Prometheus" + "[Integrations] SumoLogic" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/prometheus/configuration/validate/{alias}": { + "/api/v1/sumologic/configuration/validate": { "post": { - "operationId": "PrometheusValidateConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "SumoLogicValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, @@ -14262,30 +27066,20 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] Prometheus" + "[Integrations] SumoLogic" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/prometheus/configuration/{alias}": { + "/api/v1/sumologic/configurations": { "delete": { - "operationId": "PrometheusRemoveConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "SumoLogicDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseSumoLogicConfigurationResponse" } } }, @@ -14311,44 +27105,26 @@ }, "description": "Forbidden" }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" - }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, "summary": "Delete a configuration", "tags": [ - "[Integrations] Prometheus" + "[Integrations] SumoLogic" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/sumologic/default-configuration": { "get": { - "operationId": "PrometheusGetConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "SumoLogicGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PrometheusConfiguration" + "$ref": "#/components/schemas/SumoLogicConfigurationResponse" } } }, @@ -14380,28 +27156,78 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] Prometheus" + "[Integrations] SumoLogic" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "PrometheusUpdateConfiguration", + } + }, + "/api/v1/team-roles": { + "get": { + "description": "Retrieve all team member role definitions configured for the organization. These are the roles that can be assigned to members of a team (e.g. \"Security Champion\", \"Tech Lead\"), not Cortex user roles or permissions.", + "operationId": "listTeamMemberRoles", "parameters": [ { - "in": "path", - "name": "alias", - "required": true, + "description": "Case-insensitive filter matched against the role name and tag. Omit to return all roles.", + "in": "query", + "name": "query", + "required": false, "schema": { "type": "string" } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamRolesResponse" + } + } + }, + "description": "Object containing a page of team member roles" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "List team member roles", + "tags": [ + "Team Roles" ], + "x-cortex-mcp-description": "List the team member roles defined in this workspace (for example on-call, tech-lead), each with its tag, name and description. Roles are referenced by tag wherever a team member is returned, so read this to interpret them.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create a new team member role definition that can then be assigned to members of a team (e.g. \"Security Champion\", \"Tech Lead\"). Requires the Edit Settings permission.", + "operationId": "createTeamMemberRole", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PrometheusUpdateConfigurationRequest" + "$ref": "#/components/schemas/CreateTeamRoleRequest" } } }, @@ -14412,11 +27238,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" + "$ref": "#/components/schemas/TeamRoleResponse" } } }, - "description": "Successfully updated configuration" + "description": "Successfully created the team member role" }, "400": { "content": { @@ -14426,7 +27252,7 @@ } } }, - "description": "Bad Request" + "description": "The tag is invalid, or a role with the same tag already exists" }, "403": { "content": { @@ -14436,47 +27262,45 @@ } } }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" + "description": "Caller does not have the Edit Settings permission" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "Create a team member role", "tags": [ - "[Integrations] Prometheus" + "Team Roles" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Define a new team member role (for example \"Security Champion\") with a name, a unique tag (letters, digits and hyphens), an optional description and a default for notificationsEnabled. Members can then be given the role through roleTags. Fails if the tag already exists, so check listTeamMemberRoles first. Needs the Edit Settings permission.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/prometheus/configurations": { + "/api/v1/teams": { "delete": { - "operationId": "PrometheusRemoveAllConfigurations", + "operationId": "deleteTeam", + "parameters": [ + { + "in": "query", + "name": "teamTag", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { - "200": { - "description": "Successfully deleted all configurations" - }, - "400": { + "204": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/Unit" } } }, - "description": "Bad Request" + "description": "Successfully deleted team" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -14484,75 +27308,65 @@ } } }, - "description": "Forbidden" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Delete all configurations", - "tags": [ - "[Integrations] Prometheus" - ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "PrometheusListConfigurations", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsResponsePrometheusConfiguration" - } - } - }, - "description": "Successfully found configurations" + "description": "Team not found" }, - "400": { + "405": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/Unit" } } }, - "description": "Bad Request" + "description": "Team delete is not allowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve configurations", + "summary": "Delete team", "tags": [ - "[Integrations] Prometheus" + "Teams" ], + "x-cortex-mcp-description": "Delete a team by tag. Disabled for MCP access to prevent removal of organizational units", "x-cortex-mcp-enabled": "false" }, - "post": { - "operationId": "PrometheusSaveConfigurations", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestPrometheusConfigurationRequest" - } + "get": { + "description": "*Warning:* This API can return team details if you pass in a teamTag query parameter. However, this should only be used to retrieve team details if your team identifier contains non-alphanumeric characters. Otherwise, use the standard API under `Teams` -\u003e `Retrieve team details`. When retrieving team details, the response will be a single team entity instead of a list.\n\nNote: the response objects can also include an `idpGroup` or `cortexTeam` field depending on whether the team contains a `group` or only consists of individually defined `members`.", + "operationId": "getTeamDetailsAdvanced", + "parameters": [ + { + "description": "Include teams without members", + "example": false, + "in": "query", + "name": "includeTeamsWithoutMembers", + "required": false, + "schema": { + "type": "boolean" } }, - "required": true - }, + { + "description": "Team identifier", + "example": "my-team", + "in": "query", + "name": "teamTag", + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponsePrometheusConfiguration" + "$ref": "#/components/schemas/AllTeamsResponse" } } }, - "description": "Successfully added configurations" + "description": "Object containing a list of teams" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -14560,32 +27374,42 @@ } } }, - "description": "Forbidden" + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add multiple configurations", + "summary": "Retrieve list of teams or team details", "tags": [ - "[Integrations] Prometheus" + "Teams" ], + "x-cortex-mcp-description": "Retrieve a list of all teams in the organization. Disabled for MCP access - use the catalog API with type\u003dteam filter instead to retrieve team information", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/prometheus/default-configuration": { - "get": { - "operationId": "PrometheusGetDefaultConfiguration", + }, + "post": { + "description": "Team memberships can be backed by an IdP group (from Okta, Azure AD, Google Groups, etc), or can be managed directly through Cortex. Each has a separate request shape, so make sure to select the correct example.", + "operationId": "createTeam", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTeamRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PrometheusConfiguration" + "$ref": "#/components/schemas/TeamResponse" } } }, - "description": "Successfully found default configuration" + "description": "Successfully created a team" }, "400": { "content": { @@ -14601,22 +27425,31 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "Create a team", "tags": [ - "[Integrations] Prometheus" + "Teams" ], + "x-cortex-mcp-description": "Create a team. Set type to \"CORTEX\" for a team whose members are managed in Cortex (pass cortexTeam.members), or \"IDP\" for a team synced from an identity provider group (pass idpGroup with group and provider; members come from the IdP). teamTag must be unique and is how entities reference the team as an owner. Fails if the tag already exists.", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/queries": { - "post": { - "description": "Run a CQL query. For more information about the types of queries you can run, take a look at our CQL Explorer in the app.", - "operationId": "createQuery", + }, + "put": { + "description": "*Warning:* This API should only be used if your team identifier contains non-alphanumeric characters. Otherwise, use the standard API under `Teams`.", + "operationId": "updateTeamAdvanced", + "parameters": [ + { + "in": "query", + "name": "teamTag", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QueryRequest" + "$ref": "#/components/schemas/UpdateTeamRequest" } } }, @@ -14627,11 +27460,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QueryResponse" + "$ref": "#/components/schemas/TeamResponse" } } }, - "description": "Successfully submitted query" + "description": "Successfully updated team" }, "400": { "content": { @@ -14641,9 +27474,9 @@ } } }, - "description": "Bad request" + "description": "Bad Request" }, - "409": { + "404": { "content": { "application/json": { "schema": { @@ -14651,45 +27484,43 @@ } } }, - "description": "Conflict" + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Run query", + "summary": "Update team metadata", "tags": [ - "Queries" + "Teams [Advanced]" ], + "x-cortex-mcp-description": "Update team metadata for teams with special characters. Disabled for MCP access to prevent external modifications", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/queries/{jobId}": { - "get": { - "description": "Retrieve the status and results of a CQL query", - "operationId": "getQueryResults", + "/api/v1/teams/departments": { + "delete": { + "operationId": "deleteDepartment", "parameters": [ { - "description": "jobId of the query to retrieve", - "in": "path", - "name": "jobId", + "in": "query", + "name": "departmentTag", "required": true, "schema": { - "type": "string", - "description": "jobId of the query to retrieve" + "type": "string" } } ], "responses": { - "200": { + "204": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QueryBuilderResult" + "$ref": "#/components/schemas/Unit" } } }, - "description": "Successfully found query" + "description": "Successfully deleted department" }, "404": { "content": { @@ -14699,44 +27530,27 @@ } } }, - "description": "Query not found" + "description": "Department not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve query results", + "summary": "Delete department", "tags": [ - "Queries" + "Teams [Departments] (legacy)" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/relationship-types": { + }, "get": { - "description": "List paginated relationship types", - "operationId": "listRelationshipTypes", + "operationId": "listDepartments", "parameters": [ { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", "in": "query", - "name": "page", + "name": "departmentTag", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 0 + "type": "string" } } ], @@ -14745,38 +27559,46 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PaginatedEntityRelationshipTypeResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/DepartmentResponse" + }, + { + "$ref": "#/components/schemas/AllDepartmentsResponse" + } + ] } } }, - "description": "Successfully found entity relationship types" + "description": "Successfully found department" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Department not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List relationship types", + "summary": "Retrieve department details", "tags": [ - "Entity Relationship Types [Beta]" + "Teams [Departments] (legacy)" ], - "x-cortex-mcp-description": "List all available relationship types with pagination. View relationship type configurations to understand what kinds of relationships can be created between entities like services, resources, domains, and teams", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" }, "post": { - "description": "Create a relationship type", - "operationId": "createRelationshipType", + "operationId": "createDepartment", "requestBody": { "content": { "application/json": { - "examples": { - "Entity Relationship Type Example": { - "description": "Entity Relationship Type Example", - "summary": "Creates a relationship type that groups services into components", - "value": "{\n \"name\": \"Component Hierarchy\",\n \"tag\": \"component-hierarchy\",\n \"description\": \"Defines the component hierarchy.\",\n \"definitionLocation\": \"BOTH\",\n \"isSingleSource\": true,\n \"sourcesFilter\": {\n \"include\": true,\n \"types\": [\"component\"]\n },\n \"isSingleDestination\": false,\n \"destinationsFilter\": {\n \"include\": true,\n \"types\": [\"service\", \"component]\n },\n \"inheritances\": [\n {\n \"parameterTag\": \"x-cortex-owners\",\n \"inheritanceType\": \"FALLBACK\"\n }\n ],\n \"allowCycles\": false,\n \"sourceLabelSingular\": \"Component\",\n \"sourceLabelPlural\": \"Components\",\n \"destinationLabelSingular\": \"Part\",\n \"destinationLabelPlural\": \"Parts\",\n \"createCatalog\": false\n }" - } - }, "schema": { - "$ref": "#/components/schemas/EntityRelationshipTypeRequest" + "$ref": "#/components/schemas/CreateDepartmentRequest" } } }, @@ -14787,11 +27609,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelationshipTypeResponse" + "$ref": "#/components/schemas/DepartmentResponse" } } }, - "description": "Successfully created relationship type" + "description": "Successfully created a department" }, "400": { "content": { @@ -14801,83 +27623,60 @@ } } }, - "description": "Validation error creating relationship type" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create relationship type", + "summary": "Create department", "tags": [ - "Entity Relationship Types [Beta]" + "Teams [Departments] (legacy)" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/relationship-types/{relationshipTypeTag}": { - "delete": { - "description": "Delete a relationship type", - "operationId": "deleteRelationshipType", + }, + "put": { + "operationId": "updateDepartment", "parameters": [ { - "in": "path", - "name": "relationshipTypeTag", + "in": "query", + "name": "departmentTag", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDepartmentRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Successfully deleted relationship type" - }, - "204": { - "description": "No Content" - }, - "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/DepartmentResponse" } } }, - "description": "Validation error deleting relationship type" + "description": "Successfully updated department" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Delete a relationship type", - "tags": [ - "Entity Relationship Types [Beta]" - ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "description": "List details for a relationship type", - "operationId": "getRelationshipTypeDetails", - "parameters": [ - { - "in": "path", - "name": "relationshipTypeTag", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { + "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelationshipTypeResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully found relationship type" + "description": "Bad Request" }, "404": { "content": { @@ -14887,26 +27686,27 @@ } } }, - "description": "Relationship type not found" + "description": "Department not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Get a relationship type", + "summary": "Update department", "tags": [ - "Entity Relationship Types [Beta]" + "Teams [Departments] (legacy)" ], - "x-cortex-mcp-description": "Get complete details of a specific relationship type including its configuration, rules, source/destination filters, and inheritance settings. Essential for understanding how entities can be connected and what validation rules apply", - "x-cortex-mcp-enabled": "true" - }, + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/teams/members": { "put": { - "description": "Update relationship type", - "operationId": "updateRelationshipType", + "description": "For teams whose members are not backed by an IdP, use this API to update the team members. Note that it will replace the members in the team with the members defined in this request. \n*Warning:* This API should only be used if your team identifier contains non-alphanumeric characters. Otherwise, use the standard API under `Teams`.", + "operationId": "updateCortexTeamMembersAdvanced", "parameters": [ { - "in": "path", - "name": "relationshipTypeTag", + "in": "query", + "name": "teamTag", "required": true, "schema": { "type": "string" @@ -14917,7 +27717,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelationshipTypeRequest" + "$ref": "#/components/schemas/CortexManagedTeamMembersRequest" } } }, @@ -14928,11 +27728,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EntityRelationshipTypeResponse" + "$ref": "#/components/schemas/TeamResponse" } } }, - "description": "Successfully updated relationship type" + "description": "Successfully updated team members" }, "400": { "content": { @@ -14942,106 +27742,76 @@ } } }, - "description": "Validation error updating relationship type" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update relationship type", + "summary": "[Cortex managed teams] Update members in team", "tags": [ - "Entity Relationship Types [Beta]" + "Teams [Advanced]" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/relationships/{relationshipTypeTag}": { + "/api/v1/teams/relationships": { "get": { - "description": "List all entity relationships for a certain relationship type.", - "operationId": "listEntityRelationships", - "parameters": [ - { - "in": "path", - "name": "relationshipTypeTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "operationId": "getTeamHierarchyRelationships", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ListRelationships" - } - } - }, - "description": "Successfully retrieved entity relationships" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/TeamsRelationshipsResponse" } } }, - "description": "Relationship type not found" + "description": "Successfully found team relationships" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List entity relationships for a relationship type", + "summary": "Retrieve team relationships", "tags": [ - "Entity Relationships [Beta]" + "Teams Hierarchies" ], - "x-cortex-mcp-description": "List all entity relationships/full graph for a specific relationship type across the entire organization. Returns paginated results showing all source-destination pairs, useful for understanding the complete relationship graph and finding all connections of a particular type", + "x-cortex-mcp-description": "List every parent-child relationship between teams, which together describe the team hierarchy. Use getTeamDetails to read any single team named in the result.", "x-cortex-mcp-enabled": "true" }, - "post": { - "description": "Add all entity relationships for a certain relationship type.", - "operationId": "addEntityRelationships", + "put": { + "operationId": "replaceAllTeamHierarchyRelationships", "parameters": [ { - "in": "path", - "name": "relationshipTypeTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", + "description": "Supports only replace\u003dtrue right now", + "example": true, "in": "query", - "name": "force", - "required": false, + "name": "replace", + "required": true, "schema": { - "type": "boolean" + "type": "boolean", + "default": false } } ], @@ -15049,7 +27819,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateEntityRelationships" + "$ref": "#/components/schemas/TeamsRelationshipsRequest" } } }, @@ -15060,13 +27830,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkUpdateEntityRelationshipsResponse" + "$ref": "#/components/schemas/TeamsRelationshipsResponse" } } }, - "description": "Successfully added entity relationships" + "description": "Successfully created team relationships" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -15074,60 +27844,45 @@ } } }, - "description": "Relationship type not found" + "description": "Bad Request" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add entity relationships for a relationship type", + "summary": "Replace all relationships", "tags": [ - "Entity Relationships [Beta]" + "Teams Hierarchies" ], + "x-cortex-mcp-description": "Cortex Team Hierarchy API - Read the parent-child relationships between teams", "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "Update all entity relationships for a certain relationship type.", - "operationId": "updateEntityRelationships", + } + }, + "/api/v1/teams/{tagOrId}": { + "delete": { + "operationId": "deleteTeamByTagOrId", "parameters": [ { + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "relationshipTypeTag", + "name": "tagOrId", "required": true, "schema": { - "type": "string" - } - }, - { - "description": "When true, overrides values that were defined in the catalog descriptor. Will be overwritten the next time the catalog descriptor is processed.", - "in": "query", - "name": "force", - "required": false, - "schema": { - "type": "boolean" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEntityRelationships" - } - } - }, - "required": true - }, "responses": { - "200": { + "204": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkUpdateEntityRelationshipsResponse" + "$ref": "#/components/schemas/Unit" } } }, - "description": "Successfully updated entity relationships" + "description": "Successfully deleted team" }, "404": { "content": { @@ -15137,90 +27892,40 @@ } } }, - "description": "Relationship type not found" + "description": "Team not found" + }, + "405": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Unit" + } + } + }, + "description": "Team delete is not allowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update entity relationships for a relationship type", + "summary": "Delete team by tag or ID", "tags": [ - "Entity Relationships [Beta]" + "Teams" ], + "x-cortex-mcp-description": "Delete a team by tag or ID. Disabled for MCP access to prevent removal of organizational units", "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/scorecards": { + }, "get": { - "description": "Returns scorecards matching optional search criteria. If search criteria is specified we will use search logic, which will not find Scorecards that have yet to be evaluated", - "operationId": "listScorecards", + "operationId": "getTeamDetails", "parameters": [ { - "in": "query", - "name": "showDrafts", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter based on groups, which correspond to the `x-cortex-groups` field in the Catalog Descriptor. Accepts a comma-delimited list of groups", - "in": "query", - "name": "groups", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "description": "Filter based on entity (either tags or CIDs). Accepts a comma-delimited list of entity tag or CIDs, please use only one type of identifier", - "in": "query", - "name": "entities", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - }, - { - "description": "Filter based on team (either tags or CIDs). Accepts a comma-delimited list of team tag or CIDs, please use only one type of identifier", - "in": "query", - "name": "teams", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 250 + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], @@ -15229,55 +27934,67 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PaginatedScorecardsResponse" + "$ref": "#/components/schemas/TeamResponse" + } + } + }, + "description": "Successfully found team\n\nNote: the response objects can also include an `idpGroup` or `cortexTeam` field depending on whether the team contains a `group` or only consists of individually defined `members`." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "OK" + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List Scorecards", + "summary": "Retrieve team details", "tags": [ - "Scorecards" + "Teams" ], - "x-cortex-mcp-description": "List all scorecards in the organization with optional filtering. View scorecard configurations to understand quality standards, compliance requirements, and maturity models. Supports filtering by groups, entities, and teams to find relevant scorecards", + "x-cortex-mcp-description": "Retrieve detailed information about a specific team by its tag or ID. Returns complete team data including members, slack channels, metadata, and whether it\u0027s backed by an identity provider group.", "x-cortex-mcp-enabled": "true" - } - }, - "/api/v1/scorecards/descriptor": { - "post": { - "description": "Create or update a Scorecard using the descriptor YAML. The operation is determined by the existence of a Scorecard with the same `tag` as passed in the descriptor.", - "operationId": "createOrUpdateScorecard", + }, + "put": { + "operationId": "updateTeamMetadata", "parameters": [ { - "description": "When true, this endpoint only validates the descriptor contents and returns any errors or warnings.", - "in": "query", - "name": "dryRun", - "required": false, + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", + "in": "path", + "name": "tagOrId", + "required": true, "schema": { - "type": "boolean" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], "requestBody": { "content": { - "application/yaml;charset\u003dUTF-8": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTeamRequest" + } + } }, - "description": "Raw text of the YAML \n See an example of a yaml file for scorecards [here](https://docs.cortex.io/docs/reference/basics/scorecards#descriptor)" + "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScorecardDescriptorResponse" + "$ref": "#/components/schemas/TeamResponse" } } }, - "description": "Created Scorecard" + "description": "Successfully updated team" }, "400": { "content": { @@ -15289,33 +28006,34 @@ }, "description": "Bad Request" }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Team not found" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create or update Scorecard", + "summary": "Update team metadata", "tags": [ - "Scorecards" + "Teams" ], - "x-cortex-mcp-description": "Create a new scorecard. Disabled for MCP access as scorecard creation should be carefully managed through proper governance processes", + "x-cortex-mcp-description": "Replace a team\u0027s name, description, links and Slack channels. For CORTEX teams it also replaces the member list. Any list you send overwrites the existing one and is not merged, so an empty or omitted list clears it. Call getTeamDetails first and send the full desired state. The type (\"CORTEX\" or \"IDP\") must match the team. Returns 404 if the team does not exist. To change only members, use updateCortexTeamMembers.", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/scorecards/{scorecardTag}/entity/{tagOrId}/badge": { - "get": { - "operationId": "getBadgeMarkdown", + "/api/v1/teams/{tagOrId}/archive": { + "put": { + "operationId": "archiveTeam", "parameters": [ { - "description": "Unique tag for the Scorecard.", - "in": "path", - "name": "scorecardTag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", "name": "tagOrId", "required": true, @@ -15330,11 +28048,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScorecardShieldsBadgeMarkdown" + "$ref": "#/components/schemas/TeamResponse" } } }, - "description": "Shields.io badge" + "description": "Successfully archived team" }, "404": { "content": { @@ -15344,39 +28062,58 @@ } } }, - "description": "Entity or Scorecard not found" + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve Scorecard shields.io badge", + "summary": "Archive team", "tags": [ - "Scorecards" + "Teams" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Archive a team by tag or ID. The team stays in the catalog, flagged as archived, and can be restored with unarchiveTeam. Archiving an already-archived team does nothing new. Returns 404 if the team does not exist.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/scorecards/{tag}": { - "delete": { - "operationId": "deleteScorecard", + "/api/v1/teams/{tagOrId}/members": { + "put": { + "description": "For teams whose members are not backed by an IdP, use this API to update the team members. Note that it will replace the members in the team with the members defined in this request.", + "operationId": "updateCortexTeamMembers", "parameters": [ { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "tag", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CortexManagedTeamMembersRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Successfully deleted Scorecard" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamResponse" + } + } + }, + "description": "Successfully updated team members" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -15384,43 +28121,17 @@ } } }, - "description": "Scorecard not found" + "description": "Bad Request" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Delete Scorecard", - "tags": [ - "Scorecards" - ], - "x-cortex-mcp-description": "Delete a scorecard. Disabled for MCP access as removing scorecards affects historical tracking and compliance reporting", - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "getScorecard", - "parameters": [ - { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { + "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScorecardDescriptorResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully retrieved Scorecard" + "description": "Forbidden" }, "404": { "content": { @@ -15430,32 +28141,32 @@ } } }, - "description": "Scorecard not found" + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve Scorecard", + "summary": "[Cortex managed teams] Update members in team", "tags": [ - "Scorecards" + "Teams" ], - "x-cortex-mcp-description": "Get complete details of a scorecard including its configuration, rules, levels, weights, exemption settings, and evaluation criteria. Essential for understanding how services are evaluated and what standards they must meet", + "x-cortex-mcp-description": "Replace the full member list of a Cortex-managed team (type \"CORTEX\") with the members in the request. Each member has an email, a name, and optional roleTags from listTeamMemberRoles. Members you leave out are removed, so to add one person, read the current members with getTeamDetails and send the whole list. Fails for IdP-backed teams, whose members sync from the identity provider.", "x-cortex-mcp-enabled": "true" } }, - "/api/v1/scorecards/{tag}/descriptor": { - "get": { - "operationId": "getScorecardDescriptor", + "/api/v1/teams/{tagOrId}/unarchive": { + "put": { + "operationId": "unarchiveTeam", "parameters": [ { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", + "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.", "in": "path", - "name": "tag", + "name": "tagOrId", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Entity identifier - can be a tag or CID" } } ], @@ -15464,11 +28175,11 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/TeamResponse" } } }, - "description": "Successfully retrieved Scorecard descriptor" + "description": "Successfully unarchived team" }, "404": { "content": { @@ -15478,67 +28189,72 @@ } } }, - "description": "Scorecard not found" + "description": "Team not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve Scorecard descriptor", + "summary": "Unarchive team", "tags": [ - "Scorecards" + "Teams" ], - "x-cortex-mcp-description": "Cortex Scorecards API - Measure and track service quality, compliance, and maturity levels across your organization with customizable scorecards and rules", - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Restore an archived team by tag or ID so it is active again. Reverses archiveTeam. Unarchiving an active team does nothing new. Returns 404 if the team does not exist.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption": { - "post": { - "description": "Request Scorecard rule exemption", - "operationId": "requestScorecardRuleExemption", + "/api/v1/users": { + "get": { + "description": "Returns every user in your Cortex tenant along with their profile metadata: name, email, join date, and last active timestamp. Intended for access reviews, compliance, and auditing. Role assignments are available from the separate GET /api/v1/users/roles endpoint. Requires the View Roles permission; assign it to a custom role to issue a least-privilege API key for automated reporting.", + "operationId": "getUsers", "parameters": [ { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", + "description": "Filter to specific users by email. Provide a comma-separated list to request multiple users (e.g. ?email\u003da@acme.com,b@acme.com). Matching is case-insensitive. Omit to return all users.", + "in": "query", + "name": "email", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 250 } }, { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "path", - "name": "entityTag", + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleExemptionRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleExemptionDefinition" + "$ref": "#/components/schemas/UsersResponse" } } }, - "description": "Successfully requested Scorecard rule exemption" + "description": "Successfully retrieved users" }, - "404": { + "401": { "content": { "application/json": { "schema": { @@ -15546,66 +28262,81 @@ } } }, - "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + "description": "Authentication required" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Caller does not have the View Roles permission" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Request Scorecard rule exemption", + "summary": "List users", "tags": [ - "Scorecards" + "Users" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption/approve": { - "put": { - "description": "Approve Scorecard rule exemption", - "operationId": "approveScorecardRuleExemption", + "/api/v1/users/roles": { + "get": { + "description": "Returns the role assignments for every user in your Cortex tenant, intended for access reviews and access governance reporting. Each entry lists the user along with their assigned built-in (BASIC) and CUSTOM roles. Requires the View Roles permission; assign it to a custom role to issue a least-privilege API key for automated reporting.", + "operationId": "getUserRoleAssignments", "parameters": [ { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", + "description": "Filter to specific users by email. Provide a comma-separated list to request multiple users (e.g. ?email\u003da@acme.com,b@acme.com). Matching is case-insensitive. Omit to return all users.", + "in": "query", + "name": "email", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 250 } }, { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "path", - "name": "entityTag", + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 0 } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApproveRuleExemptionRequest" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModifiedRuleExemptionsResponse" + "$ref": "#/components/schemas/UserRoleAssignmentsResponse" } } }, - "description": "Successfully approved Scorecard rule exemptions" + "description": "Successfully retrieved user role assignments" }, - "400": { + "401": { "content": { "application/json": { "schema": { @@ -15613,9 +28344,9 @@ } } }, - "description": "No pending exemptions to approve found" + "description": "Authentication required" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -15623,49 +28354,27 @@ } } }, - "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + "description": "Caller does not have the View Roles permission" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Approve Scorecard rule exemption", + "summary": "List user role assignments", "tags": [ - "Scorecards" + "Users" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption/deny": { - "put": { - "description": "Deny Scorecard rule exemption", - "operationId": "denyScorecardRuleExemption", - "parameters": [ - { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "path", - "name": "entityTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "/api/v1/veracode/configuration": { + "post": { + "operationId": "VeracodeSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RejectRuleExemptionRequest" + "$ref": "#/components/schemas/VeracodeConfigurationRequest" } } }, @@ -15676,11 +28385,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModifiedRuleExemptionsResponse" + "$ref": "#/components/schemas/ConfigurationsResponseVeracodeConfigurationResponse" } } }, - "description": "Denied Scorecard rule exemptions" + "description": "Successfully added configuration" }, "400": { "content": { @@ -15690,9 +28399,9 @@ } } }, - "description": "No pending exemptions to approve found" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -15700,49 +28409,25 @@ } } }, - "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Deny Scorecard rule exemption", + "summary": "Add a configuration", "tags": [ - "Scorecards" + "[Integrations] Veracode" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/scorecards/{tag}/entity/{entityTag}/exemption/revoke": { + }, "put": { - "description": "Revoke Scorecard rule exemption", - "operationId": "revokeScorecardRuleExemption", - "parameters": [ - { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "path", - "name": "entityTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "VeracodeReplaceConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RejectRuleExemptionRequest" + "$ref": "#/components/schemas/VeracodeConfigurationRequest" } } }, @@ -15753,11 +28438,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModifiedRuleExemptionsResponse" + "$ref": "#/components/schemas/ConfigurationsResponseVeracodeConfigurationResponse" } } }, - "description": "Revoked Scorecard rule exemptions" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -15767,9 +28452,9 @@ } } }, - "description": "No approved exemptions to revoke found" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -15777,108 +28462,69 @@ } } }, - "description": "Scorecard not found, entity not found, or rule with given identifier not found within the Scorecard" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Revoke Scorecard rule exemption", + "summary": "Update the existing configuration", "tags": [ - "Scorecards" + "[Integrations] Veracode" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/scorecards/{tag}/entity/{entityTag}/scores": { + "/api/v1/veracode/configuration/validate": { "post": { - "description": "Triggers score evaluation for entity scorecard", - "operationId": "refreshScorecardScoreForEntity", - "parameters": [ - { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "path", - "name": "entityTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "VeracodeValidateConfiguration", "responses": { "200": { - "description": "Scorecard score evaluation triggered successfully" - }, - "403": { - "description": "Unauthorized" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + } + } + }, + "description": "Successfully validated configuration" }, "404": { - "description": "Scorecard not found" - }, - "409": { - "description": "Already evaluating scorecard" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" - }, - "500": { - "description": "Scorecard evaluation failed" } }, - "summary": "Evaluate entity scorecard score", + "summary": "Validate a configuration", "tags": [ - "Scorecards" + "[Integrations] Veracode" ], - "x-cortex-mcp-description": "Cortex Scorecards API - Measure and track service quality, compliance, and maturity levels across your organization with customizable scorecards and rules", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/scorecards/{tag}/next-steps": { - "get": { - "operationId": "getScorecardNextStepsForEntity", - "parameters": [ - { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "The entity tag (`x-cortex-tag`) that identifies the entity.", - "in": "query", - "name": "entityTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "/api/v1/veracode/configurations": { + "delete": { + "operationId": "VeracodeDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NextSteps1" + "$ref": "#/components/schemas/ConfigurationsResponseVeracodeConfigurationResponse" } } }, - "description": "Any rules remaining for the entity to reach the next level in the Scorecard." + "description": "Successfully deleted configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -15886,76 +28532,52 @@ } } }, - "description": "Scorecard not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve next steps for entity in Scorecard", - "tags": [ - "Scorecards" - ], - "x-cortex-mcp-description": "Get actionable next steps for an entity to improve its scorecard performance. Shows which rules need to be satisfied to reach the next maturity level, helping teams prioritize improvements and track progress toward compliance goals", - "x-cortex-mcp-enabled": "true" - } - }, - "/api/v1/scorecards/{tag}/scores": { - "get": { - "description": "Returns latest scores for all entities in the Scorecard", - "operationId": "listScorecardScores", - "parameters": [ - { - "description": "Entity tag (x-cortex-tag)", - "in": "query", - "name": "entityTag", - "schema": { - "type": "string" - } - }, - { - "description": "Unique tag for the Scorecard", - "example": "my-production-readiness-checklist", - "in": "path", - "name": "tag", - "required": true, - "schema": { - "type": "string" - } + "description": "Bad Request" }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 - } + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } + "429": { + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Veracode" ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/veracode/default-configuration": { + "get": { + "operationId": "VeracodeGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScorecardServiceScore" + "$ref": "#/components/schemas/VeracodeConfigurationResponse" } } }, - "description": "Scorecard scores" + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -15965,24 +28587,23 @@ } } }, - "description": "Scorecard not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve Scorecard scores", + "summary": "Retrieve a configuration", "tags": [ - "Scorecards" + "[Integrations] Veracode" ], - "x-cortex-mcp-description": "Retrieve scores for all entities evaluated by a specific scorecard. Returns paginated results showing how each service, resource, or domain performs against the scorecard\u0027s rules, including individual rule scores and overall scorecard scores", - "x-cortex-mcp-enabled": "true" + "x-cortex-mcp-enabled": "false" } }, - "/api/v1/secrets": { + "/api/v1/verification-periods": { "get": { - "description": "API key must have the `Create secrets` permission.", - "operationId": "listAllSecrets", + "description": "Returns every verification period in the workspace, open or closed, with a count of how many entities are outstanding.", + "operationId": "listVerificationPeriods", "parameters": [ { "description": "Number of results to return per page, between 1 and 1000. Default 250.", @@ -16005,6 +28626,16 @@ "format": "int32", "default": 0 } + }, + { + "description": "Return only periods that are open today (true) or only those that are not (false). Omit for all periods.", + "example": true, + "in": "query", + "name": "isActive", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -16012,40 +28643,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AllSecretsResponse" - } - } - }, - "description": "Successfully retrieved secrets" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/ListVerificationPeriods" } } }, - "description": "Bad Request" + "description": "All verification periods" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List secrets", + "summary": "Retrieve verification periods", "tags": [ - "Secrets" + "Verifications" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "List verification periods, open or closed, each with a count of the entities that are still outstanding. Pass isActive\u003dtrue for the periods that are open today. Call this first to find the periodCid that the verification tools need.", + "x-cortex-mcp-enabled": "true" }, "post": { - "description": "API key must have the `Create secrets` permission.", - "operationId": "createSecret", + "description": "Opens a verification campaign over the entities its scope selects. Every selected entity gets a PENDING verification immediately, except under a cqlQuery scope, which is evaluated in the background, so the counts read zero until it finishes.", + "operationId": "createVerificationPeriod", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSecretRequest" + "$ref": "#/components/schemas/UpsertVerificationPeriodRequest" } } }, @@ -16056,11 +28678,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretResponse" + "$ref": "#/components/schemas/VerificationPeriodSummary" } } }, - "description": "Successfully created secret" + "description": "The created verification period" }, "400": { "content": { @@ -16070,48 +28692,39 @@ } } }, - "description": "Bad Request" + "description": "endDate is before startDate, or a named role does not exist" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create secret", + "summary": "Create a verification period", "tags": [ - "Secrets" + "Verifications" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Create a verification period (campaign) with a name, startDate, endDate and scope. The scope selects entities by types, entityGroups, excludedEntityGroups and/or cqlQuery; an empty scope covers every entity. Every entity in scope gets a PENDING verification right away. A cqlQuery scope is evaluated in the background, so the counts show zero until it finishes. Optional requiredRoles, requiredCustomRoleTags and requiredTeamRoleTags limit who may verify. Each call creates a new period and is not idempotent.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/secrets/{tagOrId}": { + "/api/v1/verification-periods/{periodCid}": { "delete": { - "description": "API key must have the `Create secrets` permission.", - "operationId": "deleteSecret", + "description": "Closes the period and stops it appearing in reads, along with the verifications recorded against it. The CID is not reissued, so the period cannot be restored through this API.", + "operationId": "deleteVerificationPeriod", "parameters": [ { - "description": "The specified secret tag or unique, auto-generated identifier for the secret.", + "description": "The CID of the verification period", + "example": "vp0a1b2c3d4e5f6789", "in": "path", - "name": "tagOrId", + "name": "periodCid", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], "responses": { - "200": { - "description": "Secret successfully deleted" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" + "204": { + "description": "The period was deleted" }, "404": { "content": { @@ -16121,30 +28734,30 @@ } } }, - "description": "Secret not found" + "description": "Verification period not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete secret", + "summary": "Delete a verification period", "tags": [ - "Secrets" + "Verifications" ], + "x-cortex-mcp-description": "Cortex Verification Periods API - Read the verification periods a workspace runs, their schedule and scope, and how many entities are still outstanding", "x-cortex-mcp-enabled": "false" }, "get": { - "description": "API key must have the `Create secrets` permission.", - "operationId": "getSecret", + "operationId": "retrieveVerificationPeriod", "parameters": [ { - "description": "The specified secret tag or unique, auto-generated identifier for the secret.", + "description": "The CID of the verification period", + "example": "vp0a1b2c3d4e5f6789", "in": "path", - "name": "tagOrId", + "name": "periodCid", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], @@ -16153,11 +28766,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretResponse" + "$ref": "#/components/schemas/VerificationPeriodSummary" } } }, - "description": "Successfully retrieved secret" + "description": "The verification period" }, "404": { "content": { @@ -16167,30 +28780,31 @@ } } }, - "description": "Secret not found" + "description": "Verification period not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve secret", + "summary": "Retrieve a verification period", "tags": [ - "Secrets" + "Verifications" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Get one verification period by its CID, including its schedule, the entity filter that sets its scope, who may verify, and how many entities are outstanding. Use listVerificationPeriods to find the CID.", + "x-cortex-mcp-enabled": "true" }, "put": { - "description": "API key must have the `Create secrets` permission.", - "operationId": "updateSecret", + "description": "Replaces the period in full; omitted optional fields are cleared rather than left alone. Changing the scope changes who owes a verification: widening it adds PENDING entries, and narrowing it removes entries along with any answer already recorded for them.", + "operationId": "updateVerificationPeriod", "parameters": [ { - "description": "The specified secret tag or unique, auto-generated identifier for the secret.", + "description": "The CID of the verification period", + "example": "vp0a1b2c3d4e5f6789", "in": "path", - "name": "tagOrId", + "name": "periodCid", "required": true, "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" + "type": "string" } } ], @@ -16198,7 +28812,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateSecretRequest" + "$ref": "#/components/schemas/UpsertVerificationPeriodRequest" } } }, @@ -16209,11 +28823,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretResponse" + "$ref": "#/components/schemas/VerificationPeriodSummary" } } }, - "description": "Successfully updated secret" + "description": "The updated verification period" }, "400": { "content": { @@ -16223,7 +28837,7 @@ } } }, - "description": "Bad Request" + "description": "endDate is before startDate, or a named role does not exist" }, "404": { "content": { @@ -16233,27 +28847,149 @@ } } }, - "description": "Secret not found" + "description": "Verification period not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update secret", + "summary": "Update a verification period", "tags": [ - "Secrets" + "Verifications" + ], + "x-cortex-mcp-description": "Update a verification period by its CID. This replaces the period in full, so optional fields that are left out are cleared; call retrieveVerificationPeriod first and send the complete definition. Changing the scope is destructive: widening it adds PENDING entries, and narrowing it deletes the entries for removed entities, including answers already recorded.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/verifications": { + "get": { + "description": "Returns every verification in the workspace, one entry per entity and verification period, including entities that have not been verified yet. Each entry names the entity it belongs to, and who verified it once someone has.", + "operationId": "listVerifications", + "parameters": [ + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 + } + }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "description": "Return only verifications belonging to this verification period", + "example": "vp0a1b2c3d4e5f6789", + "in": "query", + "name": "periodCid", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Return only verifications in this state", + "example": "PENDING", + "in": "query", + "name": "status", + "required": false, + "schema": { + "type": "string", + "enum": [ + "PENDING", + "VERIFIED_CORRECT", + "VERIFIED_INCORRECT" + ] + } + }, + { + "description": "Return only verifications whose period is open today (true) or only those whose period is not (false). Omit for all periods.", + "example": true, + "in": "query", + "name": "isActive", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListVerifications" + } + } + }, + "description": "A page of verifications" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Retrieve verifications", + "tags": [ + "Verifications" + ], + "x-cortex-mcp-description": "List verifications across the catalog, one entry per entity and verification period, including entities nobody has verified yet. Each entry names the entity, the period it belongs to, the status (PENDING, VERIFIED_CORRECT, VERIFIED_INCORRECT), and who verified it. Filter by periodCid, status, or isActive\u003dtrue for periods that are open today. Use this to answer who still owes a verification, and which entities were reported incorrect.", + "x-cortex-mcp-enabled": "true" + }, + "put": { + "description": "Answers many entity-and-period pairs in one call. Each entry is answered on its own merits: an entity the caller may not verify is returned under `errors` while the rest are still recorded, because eligibility depends on who owns each entity. Read `errors` on every response -- a 200 does not mean every entry was recorded.", + "operationId": "bulkVerifyEntities", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkVerifyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkVerifyResponse" + } + } + }, + "description": "The entries that were recorded, and the entries that were not" + }, + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "summary": "Verify entities in bulk", + "tags": [ + "Verifications" ], + "x-cortex-mcp-description": "Cortex Verifications API - Read who has verified which entities, for which verification period, and which entities are still outstanding", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/sonarqube/configuration": { + "/api/v1/victorops/configuration": { "post": { - "operationId": "SonarQubeSaveConfiguration", + "operationId": "VictorOpsSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SonarqubeConfigurationRequest" + "$ref": "#/components/schemas/VictoropsConfigurationRequest" } } }, @@ -16264,7 +29000,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseVictoropsConfiguration" } } }, @@ -16294,28 +29030,36 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add a single configuration", + "summary": "Add a configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] VictorOps" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/sonarqube/configuration/validate": { - "post": { - "operationId": "SonarQubeValidateAllConfigurations", + }, + "put": { + "operationId": "VictorOpsReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VictoropsConfigurationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" + "$ref": "#/components/schemas/ConfigurationsResponseVictoropsConfiguration" } } }, - "description": "Successfully validated all configurations" + "description": "Successfully updates configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -16323,38 +29067,38 @@ } } }, - "description": "Configuration not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validate all configurations", + "summary": "Update the existing configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] VictorOps" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/sonarqube/configuration/validate/{alias}": { + "/api/v1/victorops/configuration/validate": { "post": { - "operationId": "SonarQubeValidateConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "VictorOpsValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationConfigValidation" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, @@ -16376,30 +29120,20 @@ }, "summary": "Validate a configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] VictorOps" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/sonarqube/configuration/{alias}": { + "/api/v1/victorops/configurations": { "delete": { - "operationId": "SonarQubeRemoveConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "VictorOpsDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseVictoropsConfiguration" } } }, @@ -16425,44 +29159,26 @@ }, "description": "Forbidden" }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" - }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, "summary": "Delete a configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] VictorOps" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/victorops/default-configuration": { "get": { - "operationId": "SonarQubeGetConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "VictorOpsGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SonarqubeConfiguration" + "$ref": "#/components/schemas/VictoropsConfiguration" } } }, @@ -16494,28 +29210,19 @@ }, "summary": "Retrieve a configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] VictorOps" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "description": "WARNING: Updating aliases for configurations or changing the default configuration could cause entity YAMLs that use this integration to break.", - "operationId": "SonarQubeUpdateConfiguration", - "parameters": [ - { - "in": "path", - "name": "alias", - "required": true, - "schema": { - "type": "string" - } - } - ], + } + }, + "/api/v1/wiz/configuration": { + "post": { + "operationId": "WizSaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SonarqubeUpdateConfigurationRequest" + "$ref": "#/components/schemas/WizConfigurationRequest" } } }, @@ -16526,11 +29233,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseWizConfigurationResponse" } } }, - "description": "Successfully updated configuration" + "description": "Successfully added configuration" }, "400": { "content": { @@ -16552,76 +29259,38 @@ }, "description": "Forbidden" }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Configuration not found" - }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update a configuration", + "summary": "Add a configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] Wiz" ], "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/sonarqube/configurations": { - "delete": { - "operationId": "SonarQubeRemoveAllConfigurations", - "responses": { - "200": { - "description": "Successfully deleted all configurations" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } + }, + "put": { + "operationId": "WizReplaceConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WizConfigurationRequest" } - }, - "description": "Forbidden" + } }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } + "required": true }, - "summary": "Delete all configurations", - "tags": [ - "[Integrations] SonarQube" - ], - "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "SonarQubeListConfigurations", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigurationsResponseSonarqubeConfiguration" + "$ref": "#/components/schemas/ConfigurationsResponseWizConfigurationResponse" } } }, - "description": "Successfully found configurations" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -16633,39 +29302,6 @@ }, "description": "Bad Request" }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Retrieve configurations", - "tags": [ - "[Integrations] SonarQube" - ], - "x-cortex-mcp-enabled": "false" - }, - "post": { - "operationId": "SonarQubeSaveConfigurations", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigurationsRequestSonarqubeConfigurationRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MultipleConfigurationsResponseSonarqubeConfiguration" - } - } - }, - "description": "Successfully added configurations" - }, "403": { "content": { "application/json": { @@ -16680,28 +29316,28 @@ "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Add multiple configurations", + "summary": "Update the existing configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] Wiz" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/sonarqube/default-configuration": { - "get": { - "operationId": "SonarQubeGetDefaultConfiguration", + "/api/v1/wiz/configuration/validate": { + "post": { + "operationId": "WizValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SonarqubeConfiguration" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully found default configuration" + "description": "Successfully validated configuration" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -16709,44 +29345,34 @@ } } }, - "description": "Bad Request" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve default configuration", + "summary": "Validate a configuration", "tags": [ - "[Integrations] SonarQube" + "[Integrations] Wiz" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/teams": { + "/api/v1/wiz/configurations": { "delete": { - "operationId": "deleteTeam", - "parameters": [ - { - "in": "query", - "name": "teamTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "WizDeleteConfiguration", "responses": { - "204": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Unit" + "$ref": "#/components/schemas/ConfigurationsResponseWizConfigurationResponse" } } }, - "description": "Successfully deleted team" + "description": "Successfully deleted configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -16754,63 +29380,52 @@ } } }, - "description": "Team not found" + "description": "Bad Request" }, - "405": { + "403": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Unit" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Team delete is not allowed" + "description": "Forbidden" }, "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Delete team", - "tags": [ - "Teams" - ], - "x-cortex-mcp-description": "Delete a team by tag. Disabled for MCP access to prevent removal of organizational units", - "x-cortex-mcp-enabled": "false" - }, - "get": { - "description": "*Warning:* This API can return team details if you pass in a teamTag query parameter. However, this should only be used to retrieve team details if your team identifier contains non-alphanumeric characters. Otherwise, use the standard API under `Teams` -\u003e `Retrieve team details`. When retrieving team details, the response will be a single team entity instead of a list.\n\nNote: the response objects can also include an `idpGroup` or `cortexTeam` field depending on whether the team contains a `group` or only consists of individually defined `members`.", - "operationId": "getTeamDetailsAdvanced", - "parameters": [ - { - "description": "Include teams without members", - "example": false, - "in": "query", - "name": "includeTeamsWithoutMembers", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Team identifier", - "example": "my-team", - "in": "query", - "name": "teamTag", - "schema": { - "type": "string" - } + "$ref": "#/components/responses/TooManyRequests" } + }, + "summary": "Delete a configuration", + "tags": [ + "[Integrations] Wiz" ], + "x-cortex-mcp-enabled": "false" + } + }, + "/api/v1/wiz/default-configuration": { + "get": { + "operationId": "WizGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AllTeamsResponse" + "$ref": "#/components/schemas/WizConfigurationResponse" } } }, - "description": "Object containing a list of teams" + "description": "Successfully found configuration" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Bad Request" }, "404": { "content": { @@ -16820,27 +29435,27 @@ } } }, - "description": "Team not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve list of teams or team details", + "summary": "Retrieve a configuration", "tags": [ - "Teams" + "[Integrations] Wiz" ], - "x-cortex-mcp-description": "Retrieve a list of all teams in the organization. Disabled for MCP access - use the catalog API with type\u003dteam filter instead to retrieve team information", "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/workday/configuration": { "post": { - "description": "Team memberships can be backed by an IdP group (from Okta, Azure AD, Google Groups, etc), or can be managed directly through Cortex. Each has a separate request shape, so make sure to select the correct example.", - "operationId": "createTeam", + "operationId": "WorkdaySaveConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTeamRequest" + "$ref": "#/components/schemas/WorkdayConfigurationRequest" } } }, @@ -16851,11 +29466,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/ConfigurationsResponseWorkdayConfigurationResponse" } } }, - "description": "Successfully created a team" + "description": "Successfully added configuration" }, "400": { "content": { @@ -16867,35 +29482,33 @@ }, "description": "Bad Request" }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create a team", + "summary": "Add a configuration", "tags": [ - "Teams" + "[Integrations] Workday" ], - "x-cortex-mcp-description": "Create a new team. Disabled for MCP access to prevent external systems from modifying organizational structure", "x-cortex-mcp-enabled": "false" }, "put": { - "description": "*Warning:* This API should only be used if your team identifier contains non-alphanumeric characters. Otherwise, use the standard API under `Teams`.", - "operationId": "updateTeamAdvanced", - "parameters": [ - { - "in": "query", - "name": "teamTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "operationId": "WorkdayReplaceConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateTeamRequest" + "$ref": "#/components/schemas/WorkdayConfigurationRequest" } } }, @@ -16906,11 +29519,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/ConfigurationsResponseWorkdayConfigurationResponse" } } }, - "description": "Successfully updated team" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -16922,7 +29535,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -16930,43 +29543,32 @@ } } }, - "description": "Team not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update team metadata", + "summary": "Update the existing configuration", "tags": [ - "Teams [Advanced]" + "[Integrations] Workday" ], - "x-cortex-mcp-description": "Update team metadata for teams with special characters. Disabled for MCP access to prevent external modifications", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/teams/departments": { - "delete": { - "operationId": "deleteDepartment", - "parameters": [ - { - "in": "query", - "name": "departmentTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + "/api/v1/workday/configuration/validate": { + "post": { + "operationId": "WorkdayValidateConfiguration", "responses": { - "204": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Unit" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Successfully deleted department" + "description": "Successfully validated configuration" }, "404": { "content": { @@ -16976,49 +29578,34 @@ } } }, - "description": "Department not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete department", + "summary": "Validate a configuration", "tags": [ - "Teams [Departments] (legacy)" + "[Integrations] Workday" ], "x-cortex-mcp-enabled": "false" - }, - "get": { - "operationId": "listDepartments", - "parameters": [ - { - "in": "query", - "name": "departmentTag", - "required": true, - "schema": { - "type": "string" - } - } - ], + } + }, + "/api/v1/workday/configurations": { + "delete": { + "operationId": "WorkdayDeleteConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/DepartmentResponse" - }, - { - "$ref": "#/components/schemas/AllDepartmentsResponse" - } - ] + "$ref": "#/components/schemas/ConfigurationsResponseWorkdayConfigurationResponse" } } }, - "description": "Successfully found department" + "description": "Successfully deleted configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -17026,40 +29613,42 @@ } } }, - "description": "Department not found" + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve department details", + "summary": "Delete a configuration", "tags": [ - "Teams [Departments] (legacy)" + "[Integrations] Workday" ], "x-cortex-mcp-enabled": "false" - }, - "post": { - "operationId": "createDepartment", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateDepartmentRequest" - } - } - }, - "required": true - }, + } + }, + "/api/v1/workday/default-configuration": { + "get": { + "operationId": "WorkdayGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DepartmentResponse" + "$ref": "#/components/schemas/WorkdayConfigurationResponse" } } }, - "description": "Successfully created a department" + "description": "Successfully found configuration" }, "400": { "content": { @@ -17071,99 +29660,129 @@ }, "description": "Bad Request" }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create department", + "summary": "Retrieve a configuration", "tags": [ - "Teams [Departments] (legacy)" + "[Integrations] Workday" ], "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "updateDepartment", + } + }, + "/api/v1/workflows": { + "get": { + "description": "List workflows.\n\nAPI key must have the `View workflows` permission.", + "operationId": "listWorkflows", "parameters": [ { + "description": "When true, returns the list of actions for each workflow. Defaults to false.", "in": "query", - "name": "departmentTag", - "required": true, + "name": "includeActions", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "description": "When set, only returns workflows with the given substring in the name or description.", + "in": "query", + "name": "searchQuery", + "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateDepartmentRequest" - } + }, + { + "description": "Number of results to return per page, between 1 and 1000. Default 250.", + "in": "query", + "name": "pageSize", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 250 } }, - "required": true - }, + { + "description": "Page number to return, 0-indexed. Default 0.", + "in": "query", + "name": "page", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DepartmentResponse" + "$ref": "#/components/schemas/WorkflowListResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/WorkflowListResponse" } } }, - "description": "Successfully updated department" + "description": "Successfully found workflows" }, - "400": { + "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { + }, + "application/yaml": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Department not found" + "description": "Access denied" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update department", + "summary": "List workflows", "tags": [ - "Teams [Departments] (legacy)" - ], - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/teams/members": { - "put": { - "description": "For teams whose members are not backed by an IdP, use this API to update the team members. Note that it will replace the members in the team with the members defined in this request. \n*Warning:* This API should only be used if your team identifier contains non-alphanumeric characters. Otherwise, use the standard API under `Teams`.", - "operationId": "updateCortexTeamMembersAdvanced", - "parameters": [ - { - "in": "query", - "name": "teamTag", - "required": true, - "schema": { - "type": "string" - } - } + "Workflows" ], + "x-cortex-mcp-description": "List the workflows defined in this workspace, with their tags, names and descriptions. Use this to find the workflow tag that getWorkflow, runWorkflow and listWorkflowRuns need.", + "x-cortex-mcp-enabled": "true" + }, + "post": { + "description": "Create or update new workflow.\n\nAPI key must have the `Edit workflows` permission.\n\n**Note:** If a workflow with the same tag already exists, it will be updated.", + "operationId": "createOrUpdateWorkflow", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CortexManagedTeamMembersRequest" + "$ref": "#/components/schemas/WorkflowDefinition" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/WorkflowDefinition" } } }, @@ -17174,11 +29793,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/WorkflowDefinition" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/WorkflowDefinition" } } }, - "description": "Successfully updated team members" + "description": "Workflow created successfully" }, "400": { "content": { @@ -17186,9 +29810,14 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Bad Request" + "description": "Bad request" }, "403": { "content": { @@ -17196,118 +29825,199 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { + }, + "application/yaml": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Team not found" + "description": "Access denied" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[Cortex managed teams] Update members in team", + "summary": "Create or update workflow", "tags": [ - "Teams [Advanced]" + "Workflows" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Create a new workflow, or update an existing one if a workflow with the same tag already exists. An update fully replaces the prior definition rather than merging fields. The caller must have the `Edit workflows` permission. Prefer getWorkflow(tag) first when updating, to base the new definition on the current one.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/teams/relationships": { + "/api/v1/workflows/runs": { "get": { - "operationId": "getTeamHierarchyRelationships", + "description": "List workflow runs based on filters.\n\nAPI key must have the `View workflow runs` permission.", + "operationId": "listWorkflowRuns", + "parameters": [ + { + "description": "When true, the response includes the run context. Defaults to false for MCP clients and true otherwise.", + "in": "query", + "name": "includeContext", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter by workflow tag or CID. Repeat the parameter for several workflows.", + "in": "query", + "name": "workflowIds", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Search query for workflow name or description", + "in": "query", + "name": "searchQuery", + "schema": { + "type": "string" + } + }, + { + "description": "Filter by target entity tag or CID", + "in": "query", + "name": "entityId", + "schema": { + "type": "string" + } + }, + { + "description": "Filter by the email of the user who initiated the run. Repeat the parameter for several users.", + "in": "query", + "name": "initiatedBy", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "description": "Filter runs started after this time (UTC, without an offset, e.g. 2026-06-22T00:00:00). Runs older than 30 days are never returned.", + "in": "query", + "name": "startedAfter", + "schema": { + "type": "string" + } + }, + { + "description": "Filter runs started before this time (UTC, without an offset, e.g. 2026-06-22T00:00:00)", + "in": "query", + "name": "startedBefore", + "schema": { + "type": "string" + } + }, + { + "description": "Page number, starting at 0", + "in": "query", + "name": "page", + "schema": { + "minimum": 0, + "type": "integer", + "default": 0 + } + }, + { + "description": "Number of runs per page", + "in": "query", + "name": "size", + "schema": { + "minimum": 1, + "type": "integer", + "default": 10 + } + }, + { + "description": "Sort as `property,direction`. Defaults to `dateCreated,desc`.", + "in": "query", + "name": "sort", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamsRelationshipsResponse" + "$ref": "#/components/schemas/PaginatedResultWorkflowRunSummaryResponse" } } }, - "description": "Successfully found team relationships" + "description": "Successfully found workflow runs" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve team relationships", + "summary": "List workflow runs", "tags": [ - "Teams Hierarchies" - ], - "x-cortex-mcp-enabled": "false" - }, - "put": { - "operationId": "replaceAllTeamHierarchyRelationships", - "parameters": [ - { - "description": "Supports only replace\u003dtrue right now", - "example": true, - "in": "query", - "name": "replace", - "required": true, - "schema": { - "type": "boolean", - "default": false - } - } + "Workflows" ], + "x-cortex-mcp-description": "List workflow runs across the workspace, newest first. Each run names the workflow, who or what started it, its state and when it finished. Use this to answer whether a workflow fired and whether it succeeded. Filter with workflowIds, initiatedBy, entityId and startedAfter/startedBefore; only runs from the last 30 days are returned. The run context is left out unless includeContext\u003dtrue.", + "x-cortex-mcp-enabled": "true" + } + }, + "/api/v1/workflows/validate": { + "post": { + "description": "Validates YAML descriptor.", + "operationId": "validateWorkflowDescriptor", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamsRelationshipsRequest" + "type": "string" + } + }, + "application/yaml": { + "schema": { + "type": "string" } } }, - "required": true + "description": "Raw text of the YAML" }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamsRelationshipsResponse" - } - } - }, - "description": "Successfully created team relationships" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/OpenApiResponse" } } }, - "description": "Bad Request" + "description": "Validation result" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Replace all relationships", + "summary": "Validates YAML descriptor", "tags": [ - "Teams Hierarchies" + "Workflows" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Check a workflow descriptor (raw YAML or JSON) without saving anything. Returns ok plus a list of violations. Call this before createOrUpdateWorkflow to catch errors.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/teams/{tagOrId}": { + "/api/v1/workflows/{tagOrId}": { "delete": { - "operationId": "deleteTeamByTagOrId", + "description": "Delete workflow by tag or ID.\n\nAPI key must have the `Edit workflows` permission.", + "operationId": "deleteWorkflow", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag or unique, auto-generated identifier for the workflow.", "in": "path", "name": "tagOrId", "required": true, @@ -17318,15 +30028,8 @@ } ], "responses": { - "204": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Unit" - } - } - }, - "description": "Successfully deleted team" + "200": { + "description": "Workflow deleted successfully" }, "404": { "content": { @@ -17334,36 +30037,32 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - } - }, - "description": "Team not found" - }, - "405": { - "content": { - "application/json": { + }, + "application/yaml": { "schema": { - "$ref": "#/components/schemas/Unit" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Team delete is not allowed" + "description": "Workflow not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete team by tag or ID", + "summary": "Delete workflow", "tags": [ - "Teams" + "Workflows" ], - "x-cortex-mcp-description": "Delete a team by tag or ID. Disabled for MCP access to prevent removal of organizational units", + "x-cortex-mcp-description": "Cortex Workflows API - Automate processes by defining triggers and actions, and run and inspect workflow executions", "x-cortex-mcp-enabled": "false" }, "get": { - "operationId": "getTeamDetails", + "description": "Retrieve workflow by tag or ID.\n\nAPI key must have the `View workflows` permission.", + "operationId": "getWorkflow", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag or unique, auto-generated identifier for the workflow.", "in": "path", "name": "tagOrId", "required": true, @@ -17378,11 +30077,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/WorkflowDefinition" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/WorkflowDefinition" + } + } + }, + "description": "Successfully found workflow" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully found team\n\nNote: the response objects can also include an `idpGroup` or `cortexTeam` field depending on whether the team contains a `group` or only consists of individually defined `members`." + "description": "Access denied" }, "404": { "content": { @@ -17390,26 +30109,34 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Team not found" + "description": "Workflow not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve team details", + "summary": "Retrieve workflow", "tags": [ - "Teams" + "Workflows" ], - "x-cortex-mcp-description": "Retrieve detailed information about a specific team by its tag or ID. Returns complete team data including members, slack channels, metadata, and whether it\u0027s backed by an identity provider group", + "x-cortex-mcp-description": "Get one workflow by tag or CID, including the actions it runs and the inputs it takes. Use listWorkflows to find the tag.", "x-cortex-mcp-enabled": "true" - }, - "put": { - "operationId": "updateTeamMetadata", + } + }, + "/api/v1/workflows/{tagOrId}/callback/{callbackId}": { + "post": { + "description": "Updates an asynchronous HTTP request Workflow block.\n\nAPI key must have the `Edit workflow runs` permission.", + "operationId": "workflowsAsyncHttpCallback", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag or unique, auto-generated identifier for the workflow.", "in": "path", "name": "tagOrId", "required": true, @@ -17417,13 +30144,28 @@ "type": "string", "description": "Entity identifier - can be a tag or CID" } + }, + { + "description": "Callback ID; Provided by the Workflow block when it runs", + "in": "path", + "name": "callbackId", + "required": true, + "schema": { + "type": "string", + "description": "Callback ID; Provided by the Workflow block when it runs" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateTeamRequest" + "$ref": "#/components/schemas/CallbackRequest" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/CallbackRequest" } } }, @@ -17431,24 +30173,37 @@ }, "responses": { "200": { + "description": "Successfully received Workflow callback" + }, + "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/ErrorResponse" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully updated team" + "description": "Bad request" }, - "400": { + "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Bad Request" + "description": "Access denied" }, "404": { "content": { @@ -17456,77 +30211,49 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - } - }, - "description": "Team not found" - }, - "429": { - "$ref": "#/components/responses/TooManyRequests" - } - }, - "summary": "Update team metadata", - "tags": [ - "Teams" - ], - "x-cortex-mcp-description": "Update team metadata. Disabled for MCP access to prevent external modifications to team structure", - "x-cortex-mcp-enabled": "false" - } - }, - "/api/v1/teams/{tagOrId}/archive": { - "put": { - "operationId": "archiveTeam", - "parameters": [ - { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { + }, + "application/yaml": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Successfully archived team" + "description": "Workflow run or block not found" }, - "404": { + "406": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } } }, - "description": "Team not found" + "description": "Workflow block is not waiting for callback" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Archive team", + "summary": "Update asynchronous HTTP request Workflow block", "tags": [ - "Teams" + "Workflows" ], - "x-cortex-mcp-description": "Archive a team. Disabled for MCP access to prevent modification of team status", + "x-cortex-mcp-description": "Cortex Workflows API - Automate processes by defining triggers and actions, and run and inspect workflow executions", "x-cortex-mcp-enabled": "false" } }, - "/api/v1/teams/{tagOrId}/members": { - "put": { - "description": "For teams whose members are not backed by an IdP, use this API to update the team members. Note that it will replace the members in the team with the members defined in this request.", - "operationId": "updateCortexTeamMembers", + "/api/v1/workflows/{tagOrId}/runs": { + "post": { + "description": "Start a new run for a workflow.\n\nAPI key must have the `Run workflows` permission and the workflow must be runnable via API", + "operationId": "runWorkflow", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag or unique, auto-generated identifier for the workflow.", "in": "path", "name": "tagOrId", "required": true, @@ -17534,13 +30261,22 @@ "type": "string", "description": "Entity identifier - can be a tag or CID" } + }, + { + "description": "When true, the response includes the run context. Defaults to false for MCP clients and true otherwise.", + "in": "query", + "name": "includeContext", + "required": false, + "schema": { + "type": "boolean" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CortexManagedTeamMembersRequest" + "$ref": "#/components/schemas/WorkflowRunRequest" } } }, @@ -17551,21 +30287,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" - } - } - }, - "description": "Successfully updated team members" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/WorkflowRunDetailsResponse" } } }, - "description": "Bad Request" + "description": "Workflow run started successfully" }, "403": { "content": { @@ -17575,7 +30301,7 @@ } } }, - "description": "Forbidden" + "description": "Access denied or running workflow is disabled" }, "404": { "content": { @@ -17585,25 +30311,27 @@ } } }, - "description": "Team not found" + "description": "Workflow not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "[Cortex managed teams] Update members in team", + "summary": "Run a workflow", "tags": [ - "Teams" + "Workflows" ], - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Start a new run for a workflow. The workflow must be runnable via API and the caller must have the `Run workflows` permission. The scope type must match the workflow filter type. Set workflow variables with initialContext. Returns the run\u0027s initial status and run id for polling via getWorkflowRun. The run context is left out unless includeContext\u003dtrue.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/teams/{tagOrId}/unarchive": { - "put": { - "operationId": "unarchiveTeam", + "/api/v1/workflows/{tagOrId}/runs/{runId}": { + "get": { + "description": "Retrieve details of a specific workflow run.\n\nAPI key must have the `View workflow runs` permission.", + "operationId": "getWorkflowRun", "parameters": [ { - "description": "The tag (`x-cortex-tag`) or unique, auto-generated identifier for the entity.", + "description": "The tag or unique, auto-generated identifier for the workflow.", "in": "path", "name": "tagOrId", "required": true, @@ -17611,6 +30339,24 @@ "type": "string", "description": "Entity identifier - can be a tag or CID" } + }, + { + "description": "The ID of the run, from runWorkflow or listWorkflowRuns", + "in": "path", + "name": "runId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "When true, the response includes the run context. Defaults to false for MCP clients and true otherwise.", + "in": "query", + "name": "includeContext", + "required": false, + "schema": { + "type": "boolean" + } } ], "responses": { @@ -17618,11 +30364,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamResponse" + "$ref": "#/components/schemas/WorkflowRunDetailsResponse" } } }, - "description": "Successfully unarchived team" + "description": "Successfully found workflow run" }, "404": { "content": { @@ -17632,121 +30378,81 @@ } } }, - "description": "Team not found" + "description": "Workflow or run not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Unarchive team", + "summary": "Get workflow run details", "tags": [ - "Teams" + "Workflows" ], - "x-cortex-mcp-description": "Unarchive a team. Disabled for MCP access to prevent modification of team status", - "x-cortex-mcp-enabled": "false" + "x-cortex-mcp-description": "Get one workflow run by its id, including the outcome of each action in it. Use listWorkflowRuns to find the run id. Poll while the status is NOT_INITIATED or IN_PROGRESS. The run context is left out unless includeContext\u003dtrue.", + "x-cortex-mcp-enabled": "true" } }, - "/api/v1/workflows": { - "get": { - "description": "List workflows.\n\nAPI key must have the `View workflows` permission.", - "operationId": "listWorkflows", - "parameters": [ - { - "description": "When true, returns the list of actions for each workflow. Defaults to false.", - "in": "query", - "name": "includeActions", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "description": "When set, only returns workflows with the given substring in the name or description.", - "in": "query", - "name": "searchQuery", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Number of results to return per page, between 1 and 1000. Default 250.", - "in": "query", - "name": "pageSize", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 250 + "/api/v1/xmatters/configuration": { + "post": { + "operationId": "xMattersSaveConfiguration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/XMattersConfigurationRequest" + } } }, - { - "description": "Page number to return, 0-indexed. Default 0.", - "in": "query", - "name": "page", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowListResponse" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/WorkflowListResponse" + "$ref": "#/components/schemas/ConfigurationsResponseXMattersConfiguration" } } }, - "description": "Successfully found workflows" + "description": "Successfully added configuration" }, - "403": { + "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Access denied" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "List workflows", + "summary": "Add a configuration", "tags": [ - "Workflows" + "[Integrations] xMatters" ], "x-cortex-mcp-enabled": "false" }, - "post": { - "description": "Create or update new workflow.\n\nAPI key must have the `Edit workflows` permission.\n\n**Note:** If a workflow with the same tag already exists, it will be updated.", - "operationId": "createOrUpdateWorkflow", + "put": { + "operationId": "xMattersReplaceConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowDefinition" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/WorkflowDefinition" + "$ref": "#/components/schemas/XMattersConfigurationRequest" } } }, @@ -17757,16 +30463,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowDefinition" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/WorkflowDefinition" + "$ref": "#/components/schemas/ConfigurationsResponseXMattersConfiguration" } } }, - "description": "Workflow created successfully" + "description": "Successfully updates configuration" }, "400": { "content": { @@ -17774,14 +30475,9 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Bad request" + "description": "Bad Request" }, "403": { "content": { @@ -17789,149 +30485,124 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Access denied" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Create or update workflow", + "summary": "Update the existing configuration", "tags": [ - "Workflows" + "[Integrations] xMatters" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/workflows/validate": { + "/api/v1/xmatters/configuration/validate": { "post": { - "description": "Validates YAML descriptor.", - "operationId": "validateWorkflowDescriptor", - "requestBody": { - "content": { - "application/json": {}, - "application/yaml": {} - }, - "description": "Raw text of the YAML" - }, + "operationId": "xMattersValidateConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenApiResponse" + "$ref": "#/components/schemas/MultipleIntegrationConfigValidation" } } }, - "description": "Validation result" + "description": "Successfully validated configuration" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + }, + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Validates YAML descriptor", + "summary": "Validate a configuration", "tags": [ - "Workflows" + "[Integrations] xMatters" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/workflows/{tagOrId}": { + "/api/v1/xmatters/configurations": { "delete": { - "description": "Delete workflow by tag or ID.\n\nAPI key must have the `Edit workflows` permission.", - "operationId": "deleteWorkflow", - "parameters": [ - { - "description": "The tag or unique, auto-generated identifier for the workflow.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "operationId": "xMattersDeleteConfiguration", "responses": { "200": { - "description": "Workflow deleted successfully" + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigurationsResponseXMattersConfiguration" + } + } + }, + "description": "Successfully deleted configuration" }, - "404": { + "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, - "description": "Workflow not found" + "description": "Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Delete workflow", + "summary": "Delete a configuration", "tags": [ - "Workflows" + "[Integrations] xMatters" ], "x-cortex-mcp-enabled": "false" - }, + } + }, + "/api/v1/xmatters/default-configuration": { "get": { - "description": "Retrieve workflow by tag or ID.\n\nAPI key must have the `View workflows` permission.", - "operationId": "getWorkflow", - "parameters": [ - { - "description": "The tag or unique, auto-generated identifier for the workflow.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - } - ], + "operationId": "xMattersGetConfiguration", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowDefinition" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/WorkflowDefinition" + "$ref": "#/components/schemas/XMattersConfiguration" } } }, - "description": "Successfully found workflow" + "description": "Successfully found configuration" }, - "403": { + "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Access denied" + "description": "Bad Request" }, "404": { "content": { @@ -17939,138 +30610,122 @@ "schema": { "$ref": "#/components/schemas/ErrorResponse" } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } } }, - "description": "Workflow not found" + "description": "Configuration not found" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Retrieve workflow", + "summary": "Retrieve a configuration", "tags": [ - "Workflows" + "[Integrations] xMatters" ], "x-cortex-mcp-enabled": "false" } }, - "/api/v1/workflows/{tagOrId}/callback/{callbackId}": { - "post": { - "description": "Updates an asynchronous HTTP request Workflow block.\n\nAPI key must have the `Edit workflow runs` permission.", - "operationId": "workflowsAsyncHttpCallback", + "/dev-login/emails": { + "get": { + "operationId": "emailsForTenant", "parameters": [ { - "description": "The tag or unique, auto-generated identifier for the workflow.", - "in": "path", - "name": "tagOrId", - "required": true, - "schema": { - "type": "string", - "description": "Entity identifier - can be a tag or CID" - } - }, - { - "description": "Callback ID; Provided by the Workflow block when it runs", - "in": "path", - "name": "callbackId", + "in": "query", + "name": "tenantCode", "required": true, "schema": { - "type": "string", - "description": "Callback ID; Provided by the Workflow block when it runs" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CallbackRequest" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/CallbackRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Successfully received Workflow callback" - }, - "400": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Bad request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - }, - "application/yaml": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "type": "string" + } } } }, - "description": "Access denied" + "description": "OK" }, - "404": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "tags": [ + "dev-login-controller" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/scim/v2/Schemas": { + "get": { + "operationId": "getSchemas", + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "string" } }, - "application/yaml": { + "application/scim+json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "string" } } }, - "description": "Workflow run or block not found" + "description": "OK" }, - "406": { + "429": { + "$ref": "#/components/responses/TooManyRequests" + } + }, + "tags": [ + "public-scim-schema-controller" + ], + "x-cortex-mcp-enabled": "false" + } + }, + "/scim/v2/Schemas/{id}": { + "get": { + "operationId": "getSchema", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "string" } }, - "application/yaml": { + "application/scim+json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "string" } } }, - "description": "Workflow block is not waiting for callback" + "description": "OK" }, "429": { "$ref": "#/components/responses/TooManyRequests" } }, - "summary": "Update asynchronous HTTP request Workflow block", "tags": [ - "Workflows" + "public-scim-schema-controller" ], "x-cortex-mcp-enabled": "false" } @@ -18163,6 +30818,21 @@ }, "description": "Returns list of requested users" }, + "403": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/scim+json": { + "schema": { + "type": "string" + } + } + }, + "description": "All SCIM operations are disabled" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } @@ -18224,6 +30894,21 @@ }, "description": "Returns created user data" }, + "403": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/scim+json": { + "schema": { + "type": "string" + } + } + }, + "description": "Automatic provisioning of users is disabled" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } @@ -18265,6 +30950,21 @@ }, "description": "Returns deleted user data" }, + "403": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/scim+json": { + "schema": { + "type": "string" + } + } + }, + "description": "Automatic deprovisioning of users is disabled" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } @@ -18320,6 +31020,21 @@ }, "description": "Returns requested user data" }, + "403": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/scim+json": { + "schema": { + "type": "string" + } + } + }, + "description": "All SCIM operations are disabled" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } @@ -18389,6 +31104,21 @@ }, "description": "Returns patched user data" }, + "400": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/scim+json": { + "schema": { + "type": "string" + } + } + }, + "description": "The SCIM toggle required for the requested change is disabled (provisioning for reactivation, deprovisioning for deactivation)" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } @@ -18458,6 +31188,21 @@ }, "description": "Returns updated user data" }, + "400": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/scim+json": { + "schema": { + "type": "string" + } + } + }, + "description": "The SCIM toggle required for the requested change is disabled (provisioning for reactivation, deprovisioning for deactivation)" + }, "429": { "$ref": "#/components/responses/TooManyRequests" } @@ -18495,9 +31240,6 @@ }, "schemas": { "AWS": { - "required": [ - "type" - ], "type": "object", "discriminator": { "propertyName": "type" @@ -18507,6 +31249,9 @@ "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "type" + ], "type": "object", "properties": { "type": { @@ -18517,18 +31262,21 @@ ] }, "AZURE_DEVOPS": { - "required": [ - "projectName", - "repoName" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "projectName", + "repoName" + ], "type": "object", "properties": { + "alias": { + "type": "string" + }, "basePath": { "type": "string" }, @@ -18543,15 +31291,15 @@ ] }, "AZURE_RESOURCES": { - "required": [ - "identifier" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "identifier" + ], "type": "object", "properties": { "alias": { @@ -18564,6 +31312,54 @@ } ] }, + "ActionRunDetailsResponse": { + "required": [ + "isRootAction", + "name", + "outgoingActions", + "schema", + "slug", + "state" + ], + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "description": "Time the action finished running" + }, + "isRootAction": { + "type": "boolean", + "description": "Whether the action is the root action of the workflow. There can be only one root action per workflow" + }, + "name": { + "type": "string", + "description": "The name of the action" + }, + "outgoingActions": { + "type": "array", + "description": "The actions that will be executed after this action", + "items": { + "type": "string", + "description": "The actions that will be executed after this action" + } + }, + "schema": { + "$ref": "#/components/schemas/WorkflowActionSchema" + }, + "slug": { + "type": "string", + "description": "The slug of the action" + }, + "startedAt": { + "type": "string", + "description": "Time the action started running" + }, + "state": { + "$ref": "#/components/schemas/WorkflowRunActionState" + } + }, + "description": "Actions and their states" + }, "ActiveDirectoryConfiguration": { "required": [ "clientId", @@ -18608,6 +31404,71 @@ } } }, + "AggregatedAttributeColumn": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Column" + }, + { + "required": [ + "aggregationFunction", + "attributeName", + "ordinal", + "resultType" + ], + "type": "object", + "properties": { + "aggregationFunction": { + "type": "string", + "description": "Type of aggregation function applied to the attribute", + "enum": [ + "SUM", + "AVG", + "COUNT", + "RATIO", + "MIN", + "MAX", + "P50", + "P95", + "RANKING", + "COLLECT", + "COLLECT_UNIQUE", + "COUNT_UNIQUE", + "LATEST" + ] + }, + "attributeName": { + "type": "string", + "description": "Name of the attribute field this column aggregates" + }, + "ordinal": { + "type": "integer", + "description": "Zero-based column position in the result data rows - use this to map column metadata to actual row data values", + "format": "int32" + }, + "resultType": { + "type": "string", + "description": "Type of the produced cell rather than of the underlying attribute", + "enum": [ + "STRING", + "BOOLEAN", + "INTEGER", + "DECIMAL", + "DOUBLE", + "DATE", + "TREE", + "DATETIME", + "JSON", + "ARRAY", + "ENUM", + "UNSUPPORTED" + ] + } + } + } + ] + }, "AllDepartmentsResponse": { "required": [ "departments" @@ -18683,6 +31544,108 @@ } } }, + "AnthropicConfiguration": { + "required": [ + "alias", + "isDefault", + "keyType", + "lastFourApiKey" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "keyType": { + "type": "string", + "enum": [ + "CONSOLE", + "ENTERPRISE" + ] + }, + "lastFourApiKey": { + "type": "string" + } + } + }, + "AnthropicConfigurationRequest": { + "required": [ + "alias", + "apiKey", + "isDefault", + "keyType" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "keyType": { + "type": "string", + "enum": [ + "CONSOLE", + "ENTERPRISE" + ] + } + } + }, + "AnthropicUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "keyType": { + "type": "string", + "enum": [ + "CONSOLE", + "ENTERPRISE" + ] + } + } + }, + "ApiKey": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunInitiatorResponse" + }, + { + "type": "object", + "properties": { + "apiKey": { + "oneOf": [ + { + "$ref": "#/components/schemas/Global" + }, + { + "$ref": "#/components/schemas/Personal" + } + ] + } + } + } + ] + }, "ApiKeyDefinition": { "required": [ "cid", @@ -18760,6 +31723,107 @@ } ] }, + "ApiKeySummary": { + "required": [ + "id", + "last4", + "type" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "last4": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type" + } + }, + "ApiKeyVerifier": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The key\u0027s name, or null when it has none", + "example": "ci-bot" + } + }, + "description": "An API key that verified an entity" + }, + "ApiiroConfiguration": { + "required": [ + "alias", + "isDefault", + "lastFour" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + } + } + }, + "ApiiroConfigurationRequest": { + "required": [ + "alias", + "apiKey", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, + "ApiiroUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, "ApproveRuleExemptionRequest": { "required": [ "ruleIdentifier" @@ -18772,35 +31836,105 @@ } } }, - "Attribute": { + "ArgoCDConfiguration": { "required": [ "alias", - "attributeName", - "name", - "ordinal" + "host", + "isDefault", + "lastFour", + "username" ], "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/Column" + "properties": { + "alias": { + "type": "string" }, - { - "type": "object", - "properties": { - "attributeName": { - "type": "string", - "description": "Name of the attribute field this column represents" - }, - "ordinal": { - "type": "integer", - "description": "Zero-based column position in the result data rows - use this to map column metadata to actual row data values", - "format": "int32" - } - } + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + }, + "username": { + "type": "string" } - ] + } + }, + "ArgoCDConfigurationRequest": { + "required": [ + "alias", + "host", + "isDefault", + "password", + "username" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } }, - "Attribute1": { + "ArgoCDUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, + "AssignedRole": { + "required": [ + "type" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Display name of the custom role; present only when type is CUSTOM" + }, + "role": { + "type": "string", + "description": "Name of the built-in role; present only when type is BASIC" + }, + "tag": { + "type": "string", + "description": "Tag of the custom role; present only when type is CUSTOM" + }, + "type": { + "type": "string", + "description": "Whether this is a built-in (BASIC) or CUSTOM role", + "enum": [ + "BASIC", + "CUSTOM" + ] + } + }, + "description": "Roles assigned to the user" + }, + "Attribute": { "required": [ "name", "type" @@ -18836,6 +31970,32 @@ }, "description": "Queryable fields available on this dimension" }, + "AttributeColumn": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Column" + }, + { + "required": [ + "attributeName", + "ordinal" + ], + "type": "object", + "properties": { + "attributeName": { + "type": "string", + "description": "Name of the attribute field this column represents" + }, + "ordinal": { + "type": "integer", + "description": "Zero-based column position in the result data rows - use this to map column metadata to actual row data values", + "format": "int32" + } + } + } + ] + }, "AttributeFilterObject": { "required": [ "attribute", @@ -18871,7 +32031,7 @@ "type": "object" } }, - "description": "Filters to apply to the data" + "description": "Filters to apply to the query" }, "AuditLogResponse": { "required": [ @@ -18964,6 +32124,26 @@ }, "description": "List of AWS types and whether they\u0027re configured to be discovered and imported into the catalogs" }, + "AwsCatalogResponse": { + "required": [ + "resources" + ], + "type": "object", + "properties": { + "lastUpdated": { + "type": "string", + "description": "Timestamp when the cache was last updated", + "format": "date-time" + }, + "resources": { + "type": "array", + "description": "List of AWS resources associated with this entity", + "items": { + "$ref": "#/components/schemas/AwsResource" + } + } + } + }, "AwsCloudControlTypeConfigurationRequest": { "required": [ "enabled", @@ -19051,6 +32231,35 @@ } } }, + "AwsResource": { + "required": [ + "details", + "tags" + ], + "type": "object", + "properties": { + "details": { + "$ref": "#/components/schemas/JsonNode" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string", + "description": "Resource tags as key-value pairs" + }, + "description": "Resource tags as key-value pairs" + } + }, + "description": "List of AWS resources associated with this entity" + }, + "AzureDevops": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ScaffolderPublisherOptions" + } + ] + }, "AzureDevopsConfiguration": { "required": [ "alias", @@ -19090,20 +32299,16 @@ }, "AzureDevopsConfiguration.PERSONAL_ACCESS_TOKEN": { "title": "PERSONAL_ACCESS_TOKEN", - "required": [ - "alias", - "isDefault", - "lastFour", - "organizationSlug", - "type", - "username" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/AzureDevopsConfiguration" }, { + "required": [ + "lastFour", + "username" + ], "type": "object", "properties": { "lastFour": { @@ -19118,21 +32323,17 @@ }, "AzureDevopsConfiguration.SERVICE_PRINCIPAL": { "title": "SERVICE_PRINCIPAL", - "required": [ - "alias", - "azureTenantId", - "clientId", - "isDefault", - "lastFour", - "organizationSlug", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/AzureDevopsConfiguration" }, { + "required": [ + "azureTenantId", + "clientId", + "lastFour" + ], "type": "object", "properties": { "azureTenantId": { @@ -19187,19 +32388,16 @@ }, "AzureDevopsConfigurationRequest.PERSONAL_ACCESS_TOKEN": { "title": "PERSONAL_ACCESS_TOKEN", - "required": [ - "alias", - "isDefault", - "organizationSlug", - "personalAccessToken", - "username" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/AzureDevopsConfigurationRequest" }, { + "required": [ + "personalAccessToken", + "username" + ], "type": "object", "properties": { "personalAccessToken": { @@ -19214,20 +32412,17 @@ }, "AzureDevopsConfigurationRequest.SERVICE_PRINCIPAL": { "title": "SERVICE_PRINCIPAL", - "required": [ - "alias", - "azureTenantId", - "clientId", - "clientSecret", - "isDefault", - "organizationSlug" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/AzureDevopsConfigurationRequest" }, { + "required": [ + "azureTenantId", + "clientId", + "clientSecret" + ], "type": "object", "properties": { "azureTenantId": { @@ -19281,10 +32476,6 @@ }, "AzureDevopsUpdateConfigurationRequest.PERSONAL_ACCESS_TOKEN": { "title": "PERSONAL_ACCESS_TOKEN", - "required": [ - "alias", - "isDefault" - ], "type": "object", "allOf": [ { @@ -19305,10 +32496,6 @@ }, "AzureDevopsUpdateConfigurationRequest.SERVICE_PRINCIPAL": { "title": "SERVICE_PRINCIPAL", - "required": [ - "alias", - "isDefault" - ], "type": "object", "allOf": [ { @@ -19477,15 +32664,15 @@ } }, "BITBUCKET": { - "required": [ - "repoName" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "repoName" + ], "type": "object", "properties": { "alias": { @@ -19499,7 +32686,62 @@ } } } - ] + ] + }, + "BambooHRConfigurationRequest": { + "required": [ + "apiToken", + "subdomain" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "employeeOwnershipField": { + "type": "string" + }, + "reportId": { + "type": "integer", + "format": "int64" + }, + "subdomain": { + "type": "string" + } + } + }, + "BambooHRConfigurationResponse": { + "required": [ + "lastFour", + "subdomain" + ], + "type": "object", + "properties": { + "employeeOwnershipField": { + "type": "string" + }, + "employeeReportId": { + "type": "integer", + "format": "int64" + }, + "lastFour": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + } + }, + "Base": { + "required": [ + "columnName" + ], + "type": "object", + "properties": { + "columnName": { + "type": "string" + } + } }, "BaseRole": { "required": [ @@ -19523,6 +32765,31 @@ } ] }, + "BaseWorkdayReportMapping": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkdayReportMappingV2" + }, + { + "required": [ + "teamId" + ], + "type": "object", + "properties": { + "hierarchy": { + "$ref": "#/components/schemas/HierarchyColumns" + }, + "teamId": { + "$ref": "#/components/schemas/Base" + }, + "teamName": { + "$ref": "#/components/schemas/Base" + } + } + } + ] + }, "BasicMetricDefinition": { "required": [ "displayName", @@ -19557,15 +32824,15 @@ "description": "List of available metric definitions with basic metadata" }, "BasicMetricDefinitionsResponse": { - "required": [ - "metrics" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/MetricDefinitionsResponse" }, { + "required": [ + "metrics" + ], "type": "object", "properties": { "metrics": { @@ -19596,11 +32863,24 @@ "properties": { "comparison": { "oneOf": [ + { + "$ref": "#/components/schemas/FilterDefinedPeerComparison" + }, { "$ref": "#/components/schemas/TimeWindow" } ] }, + "daysOfWeek": { + "uniqueItems": true, + "type": "array", + "description": "Optional day-of-week restriction (ISO: Monday\u003d1..Sunday\u003d7). When set, the query filters out rows whose time-attribute does not fall on one of these weekdays. Use {1,2,3,4,5} to exclude weekends. Empty set matches nothing.", + "items": { + "type": "integer", + "description": "Optional day-of-week restriction (ISO: Monday\u003d1..Sunday\u003d7). When set, the query filters out rows whose time-attribute does not fall on one of these weekdays. Use {1,2,3,4,5} to exclude weekends. Empty set matches nothing.", + "format": "int32" + } + }, "endTime": { "type": "string", "description": "End time for the query period", @@ -19633,25 +32913,13 @@ "$ref": "#/components/schemas/MetricAggregation" } }, - "nestedGroupBy": { - "type": "array", - "description": "Fields to group nested results by", - "items": { - "type": "string", - "description": "Fields to group nested results by" - } - }, - "nestedMetrics": { + "nestedAggregations": { "type": "array", - "description": "Optional nested metrics for advanced queries", + "description": "Nested aggregations for advanced sub-queries", "items": { - "$ref": "#/components/schemas/MetricAggregation" + "$ref": "#/components/schemas/NestedAggregation" } }, - "nestedTimeAttribute": { - "type": "string", - "description": "Time attribute for nested queries" - }, "nextPage": { "type": "string", "description": "Pagination token for next page of results" @@ -19670,11 +32938,341 @@ }, "timeAttribute": { "type": "string", - "description": "Time attribute to use for queries" + "description": "Deprecated: use timeAttributes instead. Single time attribute override as a fully-qualified path (e.g. \u0027pull_requests.date_closed\u0027)." + }, + "timeAttributes": { + "type": "array", + "description": "Time attributes to use for queries. Each entry is a fully-qualified attribute path (e.g. \u0027pull_requests.date_closed\u0027). The source is inferred from the prefix. For single-source queries, provide one entry. For multi-source, provide one per source to override.", + "items": { + "type": "string", + "description": "Time attributes to use for queries. Each entry is a fully-qualified attribute path (e.g. \u0027pull_requests.date_closed\u0027). The source is inferred from the prefix. For single-source queries, provide one entry. For multi-source, provide one per source to override." + } } }, "description": "Point-in-time metrics query request for batch processing" }, + "Bitbucket": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ScaffolderPublisherOptions" + }, + { + "type": "object", + "properties": { + "visibility": { + "type": "string", + "description": "Visibility of the created repository", + "enum": [ + "PUBLIC", + "PRIVATE" + ] + } + } + } + ] + }, + "BitbucketCloudAtlassianRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketConfigurationRequest" + }, + { + "type": "object", + "properties": { + "clientKey": { + "type": "string" + }, + "workspace": { + "type": "string" + } + } + } + ] + }, + "BitbucketCloudPersonalRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketConfigurationRequest" + }, + { + "required": [ + "password", + "username" + ], + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "username": { + "type": "string" + }, + "workspace": { + "type": "string" + } + } + } + ] + }, + "BitbucketConfigurationRequest": { + "required": [ + "alias", + "isDefault", + "type" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type" + } + }, + "BitbucketConfigurationResponse": { + "required": [ + "alias", + "isDefault", + "type" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + }, + "type": { + "type": "string" + }, + "username": { + "type": "string" + }, + "workspace": { + "type": "string" + } + } + }, + "BitbucketOnPremBasicRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketConfigurationRequest" + }, + { + "required": [ + "host", + "password", + "username" + ], + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + } + ] + }, + "BitbucketUpdateCloudAtlassianRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketUpdateConfigurationRequest" + }, + { + "type": "object", + "properties": { + "clientKey": { + "type": "string" + } + } + } + ] + }, + "BitbucketUpdateCloudPersonalRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketUpdateConfigurationRequest" + } + ] + }, + "BitbucketUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault", + "type" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "token": { + "type": "string" + }, + "type": { + "type": "string" + }, + "username": { + "type": "string" + }, + "workspace": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type" + } + }, + "BitbucketUpdateOnPremBasicRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketUpdateConfigurationRequest" + }, + { + "type": "object", + "properties": { + "host": { + "type": "string" + } + } + } + ] + }, + "BitbucketUpdateWorkspaceTokenRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketUpdateConfigurationRequest" + } + ] + }, + "BitbucketWorkspaceTokenRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/BitbucketConfigurationRequest" + }, + { + "required": [ + "token" + ], + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "workspace": { + "type": "string" + } + } + } + ] + }, + "BugsnagConfiguration": { + "required": [ + "lastFour", + "organizationId" + ], + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "lastFour": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "BugsnagConfigurationRequest": { + "required": [ + "authToken", + "organizationId" + ], + "type": "object", + "properties": { + "authToken": { + "type": "string" + }, + "host": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "BuildkiteConfigurationRequest": { + "required": [ + "apiToken", + "organizationSlug" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "BuildkiteConfigurationResponse": { + "required": [ + "lastFour", + "organizationSlug" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, "BulkAwsConfigurationsRequest": { "required": [ "configurations" @@ -19703,6 +33301,73 @@ } } }, + "BulkCustomDataRequest": { + "required": [ + "values" + ], + "type": "object", + "properties": { + "values": { + "type": "object", + "additionalProperties": { + "type": "array", + "description": "Map of entity tag -\u003e custom data key/values", + "example": { + "another-service-tag": [ + { + "key": "different-key", + "value": { + "nested": "object" + } + }, + { + "key": "my-cool-key", + "value": "Hello again" + } + ], + "service-x": [ + { + "key": "my-key", + "value": 100 + }, + { + "key": "my-second-key", + "value": "Hello" + } + ] + }, + "items": { + "$ref": "#/components/schemas/DataCreateRequest" + } + }, + "description": "Map of entity tag -\u003e custom data key/values", + "example": { + "another-service-tag": [ + { + "key": "different-key", + "value": { + "nested": "object" + } + }, + { + "key": "my-cool-key", + "value": "Hello again" + } + ], + "service-x": [ + { + "key": "my-key", + "value": 100 + }, + { + "key": "my-second-key", + "value": "Hello" + } + ] + } + } + } + }, "BulkCustomDataResponse": { "required": [ "values" @@ -19878,10 +33543,132 @@ } } }, - "COMPOUND_FILTER": { + "BulkVerifyError": { "required": [ - "type" + "code", + "entity", + "message", + "periodCid" + ], + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Why the entry was not recorded. Branch on this rather than on the message.", + "example": "NOT_AN_OWNER", + "enum": [ + "ENTITY_NOT_FOUND", + "PERIOD_NOT_FOUND", + "ENTITY_NOT_IN_PERIOD_SCOPE", + "DUPLICATE_ENTRY", + "STATUS_NOT_AN_ANSWER", + "REASON_REQUIRED", + "PERIOD_NOT_OPEN", + "MISSING_REQUIRED_ROLE", + "NOT_AN_OWNER" + ] + }, + "entity": { + "type": "string", + "description": "The entity, as the request named it" + }, + "message": { + "type": "string", + "description": "The reason in words, fixed to the code rather than written per entry", + "example": "You do not own this entity" + }, + "periodCid": { + "type": "string", + "description": "The verification period" + } + }, + "description": "One entry that was not recorded, and why" + }, + "BulkVerifyRequest": { + "required": [ + "verifications" + ], + "type": "object", + "properties": { + "verifications": { + "type": "array", + "description": "The answers to record", + "items": { + "$ref": "#/components/schemas/VerifyEntityEntry" + } + } + }, + "description": "Answers for many entity-and-period pairs" + }, + "BulkVerifyResponse": { + "required": [ + "errors", + "verifications" + ], + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "The entries that were not recorded, each naming the entity and period it came from", + "items": { + "$ref": "#/components/schemas/BulkVerifyError" + } + }, + "verifications": { + "type": "array", + "description": "The answers that were recorded", + "items": { + "$ref": "#/components/schemas/BulkVerifyResult" + } + } + }, + "description": "What a bulk verify recorded, and what it declined to record" + }, + "BulkVerifyResult": { + "required": [ + "entity", + "periodCid", + "status" ], + "type": "object", + "properties": { + "entity": { + "type": "string", + "description": "The entity, as the request named it" + }, + "periodCid": { + "type": "string", + "description": "The verification period" + }, + "reason": { + "type": "string", + "description": "Why the entity was marked incorrect, when a reason was given" + }, + "status": { + "type": "string", + "description": "The answer recorded", + "example": "VERIFIED_CORRECT", + "enum": [ + "PENDING", + "VERIFIED_CORRECT", + "VERIFIED_INCORRECT" + ] + }, + "verifiedAt": { + "type": "string", + "description": "When the entity was verified", + "format": "date-time" + }, + "verifiedByApiKey": { + "$ref": "#/components/schemas/ApiKeyVerifier" + }, + "verifiedByUser": { + "$ref": "#/components/schemas/CortexUserSummary" + } + }, + "description": "One recorded answer" + }, + "COMPOUND_FILTER": { "type": "object", "allOf": [ { @@ -19904,17 +33691,16 @@ ] }, "CQL_FILTER": { - "required": [ - "category", - "query", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityFilter" }, { + "required": [ + "category", + "query" + ], "type": "object", "properties": { "category": { @@ -19942,16 +33728,16 @@ ] }, "CUSTOM": { - "required": [ - "tag", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/ApiKeyRole" }, { + "required": [ + "tag", + "type" + ], "type": "object", "properties": { "tag": { @@ -20015,31 +33801,131 @@ "schema": { "$ref": "#/components/schemas/JsonNode" }, - "source": { + "source": { + "type": "string", + "enum": [ + "CORTEX", + "CUSTOM" + ] + }, + "type": { + "type": "string" + } + } + }, + "CatalogDefinitionsListResponse": { + "required": [ + "definitions", + "page", + "total", + "totalPages" + ], + "type": "object", + "properties": { + "definitions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CatalogDefinitionResponse" + } + }, + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + } + } + }, + "CatalogPage": { + "required": [ + "dateCreated", + "dateUpdated", + "iconTag", + "isCortexManaged", + "isDraft", + "name", + "slug", + "type" + ], + "type": "object", + "properties": { + "dateCreated": { + "type": "string", + "description": "Time the catalog was created", + "format": "date-time" + }, + "dateUpdated": { + "type": "string", + "description": "Time the catalog was last updated", + "format": "date-time" + }, + "description": { + "type": "string", + "description": "Optional description of the catalog" + }, + "filter": { + "$ref": "#/components/schemas/Filter" + }, + "iconTag": { + "type": "string", + "description": "Tag of the icon shown for the catalog", + "example": "cortex" + }, + "isCortexManaged": { + "type": "boolean", + "description": "Whether the catalog is managed by Cortex. Cortex-managed catalogs cannot be modified or deleted" + }, + "isDraft": { + "type": "boolean", + "description": "Whether the catalog is a draft" + }, + "name": { + "type": "string", + "description": "Name of the catalog" + }, + "relationshipTypeTag": { + "type": "string", + "description": "Tag of the relationship type the catalog is built from, for `RELATIONSHIP_TYPE` catalogs" + }, + "slug": { + "type": "string", + "description": "Unique identifier for the catalog", + "example": "my-catalog" + }, + "type": { "type": "string", + "description": "What the catalog is built from: a filter, a relationship type, or the domain hierarchy", "enum": [ - "CORTEX", - "CUSTOM" + "FILTER", + "RELATIONSHIP_TYPE", + "DOMAIN" ] - }, - "type": { - "type": "string" } } }, - "CatalogDefinitionsListResponse": { + "CatalogPageListResponse": { "required": [ - "definitions", + "catalogPages", "page", "total", "totalPages" ], "type": "object", "properties": { - "definitions": { + "catalogPages": { "type": "array", + "description": "The catalogs on this page of results", "items": { - "$ref": "#/components/schemas/CatalogDefinitionResponse" + "$ref": "#/components/schemas/CatalogPage" } }, "page": { @@ -20059,6 +33945,110 @@ } } }, + "CatalogPageRequest": { + "required": [ + "iconTag", + "isDraft", + "name", + "slug" + ], + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Optional description of the catalog" + }, + "filter": { + "$ref": "#/components/schemas/Filter" + }, + "iconTag": { + "type": "string", + "description": "Tag of the icon shown for the catalog", + "example": "cortex" + }, + "isDraft": { + "type": "boolean", + "description": "Whether the catalog is a draft" + }, + "name": { + "type": "string", + "description": "Name of the catalog" + }, + "relationshipTypeTag": { + "type": "string", + "description": "Tag of the relationship type the catalog is built from, for a `RELATIONSHIP_TYPE` catalog" + }, + "slug": { + "type": "string", + "description": "Unique identifier for the catalog", + "example": "my-catalog" + }, + "type": { + "type": "string", + "description": "What the catalog is built from. Optional: inferred as `FILTER` when `filter` is set and `RELATIONSHIP_TYPE` when `relationshipTypeTag` is set. Must be set explicitly to `DOMAIN` for a domain catalog", + "enum": [ + "FILTER", + "RELATIONSHIP_TYPE", + "DOMAIN" + ] + } + } + }, + "CatalogSearchResponse": { + "required": [ + "pagination", + "results" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/SearchPagination" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchResultEntity" + } + } + }, + "description": "Relevance-ranked catalog search results." + }, + "CheckmarxSastConfigurationRequest": { + "required": [ + "password", + "username" + ], + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "CheckmarxSastConfigurationResponse": { + "required": [ + "lastFour", + "username" + ], + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "lastFour": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, "CircleCiConfiguration": { "required": [ "alias", @@ -20113,6 +34103,9 @@ "alias": { "type": "string" }, + "apiKey": { + "type": "string" + }, "host": { "type": "string" }, @@ -20121,6 +34114,56 @@ } } }, + "ClickupConfigurationRequest": { + "required": [ + "personalApiToken" + ], + "type": "object", + "properties": { + "personalApiToken": { + "type": "string" + } + } + }, + "ClickupConfigurationResponse": { + "required": [ + "lastFour" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + } + } + }, + "CodecovConfigurationRequest": { + "required": [ + "apiToken" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "host": { + "type": "string" + } + } + }, + "CodecovConfigurationResponse": { + "required": [ + "lastFour" + ], + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "lastFour": { + "type": "string" + } + } + }, "Column": { "required": [ "alias", @@ -20171,13 +34214,14 @@ "required": [ "expression", "name", - "slug" + "slug", + "type" ], "type": "object", "properties": { "expression": { "type": "string", - "description": "The conditional expression for the branch" + "description": "The CEL expression for the branch. It can use `context`, `actions` and `variables`, e.g. `variables.count \u003e 0`." }, "name": { "type": "string", @@ -20190,9 +34234,58 @@ "slug": { "type": "string", "description": "The slug of the branch" + }, + "type": { + "type": "string", + "description": "Must be `CONDITIONAL`", + "enum": [ + "CONDITIONAL" + ] } }, - "description": "The list of conditional branches that will be evaluated in order" + "description": "The list of conditional branches that will be evaluated in order. Each result is at `actions.\u003cslug\u003e.outputs.conditions.\u003cbranchSlug\u003e.result`." + }, + "ConfigurationsRequestAnthropicConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnthropicConfigurationRequest" + } + } + } + }, + "ConfigurationsRequestApiiroConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiiroConfigurationRequest" + } + } + } + }, + "ConfigurationsRequestArgoCDConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArgoCDConfigurationRequest" + } + } + } }, "ConfigurationsRequestAzureDevopsConfigurationRequest": { "required": [ @@ -20222,6 +34315,33 @@ } } }, + "ConfigurationsRequestBitbucketConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/BitbucketCloudAtlassianRequest" + }, + { + "$ref": "#/components/schemas/BitbucketCloudPersonalRequest" + }, + { + "$ref": "#/components/schemas/BitbucketOnPremBasicRequest" + }, + { + "$ref": "#/components/schemas/BitbucketWorkspaceTokenRequest" + } + ] + } + } + } + }, "ConfigurationsRequestCircleCiConfigurationRequest": { "required": [ "configurations" @@ -20278,6 +34398,20 @@ } } }, + "ConfigurationsRequestHarnessConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HarnessConfigurationRequest" + } + } + } + }, "ConfigurationsRequestIncidentIoConfigurationRequest": { "required": [ "configurations" @@ -20292,6 +34426,44 @@ } } }, + "ConfigurationsRequestJenkinsConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JenkinsConfigurationRequest" + } + } + } + }, + "ConfigurationsRequestJiraConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/JiraCloudBasicRequest" + }, + { + "$ref": "#/components/schemas/JiraCloudScopedRequest" + }, + { + "$ref": "#/components/schemas/JiraOnPremBasicRequest" + } + ] + } + } + } + }, "ConfigurationsRequestLaunchDarklyConfigurationRequest": { "required": [ "configurations" @@ -20334,6 +34506,20 @@ } } }, + "ConfigurationsRequestSemgrepConfigurationRequest": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SemgrepConfigurationRequest" + } + } + } + }, "ConfigurationsRequestSonarqubeConfigurationRequest": { "required": [ "configurations" @@ -20362,6 +34548,48 @@ } } }, + "ConfigurationsResponseAnthropicConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnthropicConfiguration" + } + } + } + }, + "ConfigurationsResponseApiiroConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiiroConfiguration" + } + } + } + }, + "ConfigurationsResponseArgoCDConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArgoCDConfiguration" + } + } + } + }, "ConfigurationsResponseAzureDevopsConfiguration": { "required": [ "configurations" @@ -20390,6 +34618,76 @@ } } }, + "ConfigurationsResponseBambooHRConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BambooHRConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseBitbucketConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BitbucketConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseBugsnagConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BugsnagConfiguration" + } + } + } + }, + "ConfigurationsResponseBuildkiteConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BuildkiteConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseCheckmarxSastConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CheckmarxSastConfigurationResponse" + } + } + } + }, "ConfigurationsResponseCircleCiConfiguration": { "required": [ "configurations" @@ -20404,6 +34702,34 @@ } } }, + "ConfigurationsResponseClickupConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClickupConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseCodecovConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CodecovConfigurationResponse" + } + } + } + }, "ConfigurationsResponseCoralogixConfiguration": { "required": [ "configurations" @@ -20432,6 +34758,34 @@ } } }, + "ConfigurationsResponseDynatraceConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DynatraceConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseFirehydrantConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FirehydrantConfiguration" + } + } + } + }, "ConfigurationsResponseGitlabConfiguration": { "required": [ "configurations" @@ -20446,6 +34800,20 @@ } } }, + "ConfigurationsResponseHarnessConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HarnessConfiguration" + } + } + } + }, "ConfigurationsResponseIncidentIoConfiguration": { "required": [ "configurations" @@ -20460,6 +34828,48 @@ } } }, + "ConfigurationsResponseInstanaConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InstanaConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseJenkinsConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JenkinsConfiguration" + } + } + } + }, + "ConfigurationsResponseJiraConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JiraConfigurationResponse" + } + } + } + }, "ConfigurationsResponseLaunchDarklyConfiguration": { "required": [ "configurations" @@ -20474,6 +34884,48 @@ } } }, + "ConfigurationsResponseLightstepConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LightstepConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseMendSastConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MendSastConfiguration" + } + } + } + }, + "ConfigurationsResponseMendScaConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MendScaConfigurationResponse" + } + } + } + }, "ConfigurationsResponseNewrelicConfiguration": { "required": [ "configurations" @@ -20488,6 +34940,34 @@ } } }, + "ConfigurationsResponseOktaConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OktaConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseOpsgenieConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpsgenieConfiguration" + } + } + } + }, "ConfigurationsResponsePagerdutyConfiguration": { "required": [ "configurations" @@ -20516,6 +34996,104 @@ } } }, + "ConfigurationsResponseRollbarConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RollbarConfiguration" + } + } + } + }, + "ConfigurationsResponseRootlyConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RootlyConfiguration" + } + } + } + }, + "ConfigurationsResponseSemgrepConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SemgrepConfiguration" + } + } + } + }, + "ConfigurationsResponseSentryConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SentryConfiguration" + } + } + } + }, + "ConfigurationsResponseServiceNowConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceNowConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseSignalFxConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SignalFxConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseSnykConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SnykConfigurationResponse" + } + } + } + }, "ConfigurationsResponseSonarqubeConfiguration": { "required": [ "configurations" @@ -20530,6 +35108,90 @@ } } }, + "ConfigurationsResponseSumoLogicConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SumoLogicConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseVeracodeConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VeracodeConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseVictoropsConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VictoropsConfiguration" + } + } + } + }, + "ConfigurationsResponseWizConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WizConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseWorkdayConfigurationResponse": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WorkdayConfigurationResponse" + } + } + } + }, + "ConfigurationsResponseXMattersConfiguration": { + "required": [ + "configurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/XMattersConfiguration" + } + } + } + }, "CoralogixConfiguration": { "required": [ "alias", @@ -20602,8 +35264,22 @@ "alias": { "type": "string" }, + "apiKey": { + "type": "string" + }, "isDefault": { "type": "boolean" + }, + "region": { + "type": "string", + "enum": [ + "US1", + "US2", + "EU1", + "EU2", + "AP1", + "AP2" + ] } } }, @@ -20784,10 +35460,6 @@ }, "CortexTeamMemberRole.MISCONFIGURED": { "title": "MISCONFIGURED", - "required": [ - "tag", - "type" - ], "type": "object", "allOf": [ { @@ -20797,17 +35469,15 @@ }, "CortexTeamMemberRole.TEAM_ROLE": { "title": "TEAM_ROLE", - "required": [ - "name", - "tag", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/CortexTeamMemberRole" }, { + "required": [ + "name" + ], "type": "object", "properties": { "name": { @@ -20876,6 +35546,22 @@ }, "description": "The default value for the input" }, + "CortexUserSummary": { + "required": [ + "email", + "name" + ], + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "description": "The user who verified the entity. Null while the status is PENDING, and null when a global API key verified it." + }, "CreateApiRequest": { "required": [ "name", @@ -20978,7 +35664,7 @@ "properties": { "timestamp": { "type": "string", - "description": "Timestamp for the data point. Note: It can\u0027t be earlier than 6 months", + "description": "Timestamp for the data point in ISO 8601 format. Accepts timezone offsets (e.g., \u00272024-08-14T11:00:00Z\u0027 or \u00272024-08-14T11:00:00+00:00\u0027). Note: It can\u0027t be earlier than 2 years", "format": "date-time" }, "value": { @@ -21015,7 +35701,7 @@ "properties": { "timestamp": { "type": "string", - "description": "Timestamp for the data point. Note: It can\u0027t be earlier than 6 months", + "description": "Timestamp for the data point in ISO 8601 format. Accepts timezone offsets (e.g., \u00272024-08-14T11:00:00Z\u0027 or \u00272024-08-14T11:00:00+00:00\u0027). Note: It can\u0027t be earlier than 2 years", "format": "date-time" }, "value": { @@ -21180,14 +35866,6 @@ }, "CreateTeamRequest.CORTEX": { "title": "CORTEX", - "required": [ - "cortexTeam", - "links", - "metadata", - "slackChannels", - "teamTag", - "type" - ], "type": "object", "description": "Use this request shape when creating a team entry whose memberships are manually maintained via API or the UI.", "allOf": [ @@ -21195,6 +35873,11 @@ "$ref": "#/components/schemas/CreateTeamRequest" }, { + "required": [ + "cortexTeam", + "teamTag", + "type" + ], "type": "object", "properties": { "cortexTeam": { @@ -21213,14 +35896,6 @@ }, "CreateTeamRequest.IDP": { "title": "IDP", - "required": [ - "idpGroup", - "links", - "metadata", - "slackChannels", - "teamTag", - "type" - ], "type": "object", "description": "Use this request shape when creating a team entry whose memberships are synced with an Idp group, such as from Okta, Google Groups, Github Teams, Azure AD, etc.", "allOf": [ @@ -21228,6 +35903,11 @@ "$ref": "#/components/schemas/CreateTeamRequest" }, { + "required": [ + "idpGroup", + "teamTag", + "type" + ], "type": "object", "properties": { "idpGroup": { @@ -21244,6 +35924,33 @@ } ] }, + "CreateTeamRoleRequest": { + "required": [ + "name", + "tag" + ], + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Optional description of the team member role" + }, + "name": { + "type": "string", + "description": "Display name of the team member role", + "example": "Security Champion" + }, + "notificationsEnabled": { + "type": "boolean", + "description": "Whether notifications are enabled by default for members assigned this role. Defaults to true." + }, + "tag": { + "type": "string", + "description": "Unique tag identifying the team member role. May only contain letters, digits, and hyphens.", + "example": "security-champion" + } + } + }, "CurrentLevel": { "required": [ "name", @@ -21605,15 +36312,15 @@ } }, "DATADOG": { - "required": [ - "serviceName" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "serviceName" + ], "type": "object", "properties": { "serviceName": { @@ -21624,16 +36331,16 @@ ] }, "DEFAULT": { - "required": [ - "role", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/ApiKeyRole" }, { + "required": [ + "role", + "type" + ], "type": "object", "properties": { "role": { @@ -21653,9 +36360,6 @@ ] }, "DOMAIN_FILTER": { - "required": [ - "type" - ], "type": "object", "allOf": [ { @@ -21672,15 +36376,15 @@ ] }, "DYNATRACE": { - "required": [ - "entityId" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "entityId" + ], "type": "object", "properties": { "entityId": { @@ -21690,6 +36394,26 @@ } ] }, + "DataCreateRequest": { + "required": [ + "key", + "value" + ], + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "key": { + "type": "string", + "description": "Custom data key for the entity", + "example": "my-key" + }, + "value": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, "DatadogConfiguration": { "required": [ "alias", @@ -21789,6 +36513,19 @@ "alias": { "type": "string" }, + "apiKey": { + "type": "string", + "description": "Omit to keep the current API key." + }, + "appKey": { + "type": "string", + "description": "Omit to keep the current application key." + }, + "customSubdomain": { + "type": "string", + "description": "Omit to keep the current custom subdomain, or send null to remove it.", + "nullable": true + }, "environments": { "type": "array", "items": { @@ -21797,6 +36534,17 @@ }, "isDefault": { "type": "boolean" + }, + "region": { + "type": "string", + "description": "Omit to keep the current region.", + "enum": [ + "EU1", + "US1", + "US3", + "US5", + "US1_FED" + ] } } }, @@ -21902,16 +36650,15 @@ }, "DepartmentResponse.BaseRole.MISCONFIGURED": { "title": "MISCONFIGURED", - "required": [ - "tag", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/BaseRole" }, { + "required": [ + "tag" + ], "type": "object", "properties": { "tag": { @@ -21923,17 +36670,16 @@ }, "DepartmentResponse.BaseRole.TEAM_ROLE": { "title": "TEAM_ROLE", - "required": [ - "name", - "tag", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/BaseRole" }, { + "required": [ + "name", + "tag" + ], "type": "object", "properties": { "name": { @@ -22012,6 +36758,20 @@ } } }, + "DeployEnvironmentsResponse": { + "required": [ + "environments" + ], + "type": "object", + "properties": { + "environments": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "Deployer": { "type": "object", "properties": { @@ -22037,6 +36797,36 @@ } } }, + "DeprecatedOwners": { + "required": [ + "emails", + "groups", + "slackChannels" + ], + "type": "object", + "properties": { + "emails": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "slackChannels": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "description": "Deprecated. Use `ownership` (same semantics) or `ownersV2` (newer, richer shape). Retained in the response for backwards compatibility with older integrations and may be removed in a future release.", + "deprecated": true + }, "DetailsResponse": { "required": [ "groups", @@ -22047,6 +36837,7 @@ "links", "metadata", "name", + "owners", "ownership", "slackChannels", "tag", @@ -22107,6 +36898,9 @@ "description": "Human-readable name for the entity", "example": "My Favorite Entity" }, + "owners": { + "$ref": "#/components/schemas/DeprecatedOwners" + }, "ownersV2": { "$ref": "#/components/schemas/OwnersDetails" }, @@ -22135,6 +36929,8 @@ "required": [ "attributes", "description", + "dimensionKey", + "displayName", "name" ], "type": "object", @@ -22143,13 +36939,21 @@ "type": "array", "description": "Queryable fields available on this dimension", "items": { - "$ref": "#/components/schemas/Attribute1" + "$ref": "#/components/schemas/Attribute" } }, "description": { "type": "string", "description": "Description of the relationship this dimension represents" }, + "dimensionKey": { + "type": "string", + "description": "Unprefixed base name identifying the dimension type across sources" + }, + "displayName": { + "type": "string", + "description": "Human-readable role of this dimension in the source context (e.g., Author, Reviewer)" + }, "name": { "type": "string", "description": "Dimension identifier for use in queries" @@ -22188,14 +36992,12 @@ "BITBUCKET", "DATADOG", "DYNATRACE", - "ECS", "GCP", "GITHUB", "GITLAB", "INSTANA", "K8S", "LIGHTSTEP", - "LAMBDA", "LAMBDA_CLOUD_CONTROL", "NEWRELIC", "SERVICENOW", @@ -22213,8 +37015,6 @@ "NEW_K8S_RESOURCE", "NEW_APM_RESOURCE", "APM_RESOURCE_NOT_DETECTED", - "NEW_ECS_RESOURCE", - "ECS_RESOURCE_NOT_DETECTED", "NEW_AWS_RESOURCE", "AWS_RESOURCE_NOT_DETECTED", "NEW_GOOGLE_CLOUD_RESOURCE", @@ -22257,33 +37057,37 @@ } } }, - "ECS": { + "DynatraceConfigurationRequest": { "required": [ - "clusterArn", - "serviceArn" + "apiKey", + "domain" ], "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/EntityDiscoveryKey" + "properties": { + "apiKey": { + "type": "string" }, - { - "type": "object", - "properties": { - "clusterArn": { - "type": "string" - }, - "serviceArn": { - "type": "string" - } - } + "domain": { + "type": "string" } - ] + } }, - "ENTITY": { + "DynatraceConfigurationResponse": { "required": [ - "type" + "domain", + "lastFour" ], + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "lastFour": { + "type": "string" + } + } + }, + "ENTITY": { "type": "object", "allOf": [ { @@ -22299,6 +37103,24 @@ } ] }, + "EditPersonalAccessTokenRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "accessToken": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, "EditPersonalConfigurationRequest": { "required": [ "alias", @@ -22465,13 +37287,6 @@ "description": "Request for all entities (services, resources, domains) owned by the user" }, "Entity": { - "required": [ - "archived", - "cid", - "name", - "tag", - "type" - ], "type": "object", "description": "Catalog entity (service, resource, or domain) owned by the user", "allOf": [ @@ -22479,6 +37294,13 @@ "$ref": "#/components/schemas/MyWorkspaceItem" }, { + "required": [ + "archived", + "cid", + "name", + "tag", + "type" + ], "type": "object", "properties": { "archived": { @@ -22681,9 +37503,6 @@ { "$ref": "#/components/schemas/DYNATRACE" }, - { - "$ref": "#/components/schemas/ECS" - }, { "$ref": "#/components/schemas/GCP" }, @@ -22699,9 +37518,6 @@ { "$ref": "#/components/schemas/K8S" }, - { - "$ref": "#/components/schemas/LAMBDA" - }, { "$ref": "#/components/schemas/LIGHTSTEP" }, @@ -22832,20 +37648,19 @@ }, "description": "Hierarchy details for the entity. Includes both the parent \u0026 the children chains." }, - "EntityReference": { - "required": [ - "alias", - "attributeName", - "entityType", - "name", - "ordinal" - ], + "EntityReferenceColumn": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Column" }, { + "required": [ + "attributeName", + "entityType", + "factScope", + "ordinal" + ], "type": "object", "properties": { "attributeName": { @@ -22856,6 +37671,14 @@ "type": "string", "description": "Type of entity being referenced (e.g., \u0027user\u0027, \u0027team\u0027, \u0027service\u0027)" }, + "factScope": { + "type": "string", + "description": "Whether sibling rows under this grouping hold disjoint or overlapping facts. SHARED_ACROSS_ROWS means the grouping fans out (e.g. a repo maps to many entities), so the grouped values share underlying records and do not sum to the total; UNIQUE_PER_ROW means each row\u0027s values are its own and are additive.", + "enum": [ + "UNIQUE_PER_ROW", + "SHARED_ACROSS_ROWS" + ] + }, "ordinal": { "type": "integer", "description": "Zero-based column position in the result data rows - use this to map column metadata to actual row data values", @@ -23225,6 +38048,7 @@ "EntityTypeFilter": { "required": [ "include", + "providers", "types" ], "type": "object", @@ -23232,6 +38056,18 @@ "include": { "type": "boolean" }, + "providers": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "AWS", + "GCP", + "AZURE" + ] + } + }, "types": { "uniqueItems": true, "type": "array", @@ -23250,14 +38086,96 @@ "types": { "uniqueItems": true, "type": "array", - "description": "The entity types to include. Can be found on https://app.getcortexapp.com/admin/entities", + "description": "The entity types to include, by type tag, e.g. `service`, `domain` or `team`", "items": { "type": "string", - "description": "The entity types to include. Can be found on https://app.getcortexapp.com/admin/entities" + "description": "The entity types to include, by type tag, e.g. `service`, `domain` or `team`" } } } }, + "EntityVerification": { + "required": [ + "period", + "status" + ], + "type": "object", + "properties": { + "period": { + "$ref": "#/components/schemas/VerificationPeriod" + }, + "reason": { + "type": "string", + "description": "Why the entity was marked incorrect, when the verifier supplied one", + "example": "Ownership moved to the payments team" + }, + "status": { + "type": "string", + "description": "PENDING until someone verifies the entity for this period, then the answer they gave", + "example": "VERIFIED_CORRECT", + "enum": [ + "PENDING", + "VERIFIED_CORRECT", + "VERIFIED_INCORRECT" + ] + }, + "verifiedAt": { + "type": "string", + "description": "When the entity was verified", + "format": "date-time" + }, + "verifiedByApiKey": { + "$ref": "#/components/schemas/ApiKeyVerifier" + }, + "verifiedByUser": { + "$ref": "#/components/schemas/CortexUserSummary" + } + }, + "description": "An entity\u0027s status for one verification period" + }, + "EntityVerificationWithEntity": { + "required": [ + "entity", + "period", + "status" + ], + "type": "object", + "properties": { + "entity": { + "$ref": "#/components/schemas/VerificationEntitySummary" + }, + "period": { + "$ref": "#/components/schemas/VerificationPeriod" + }, + "reason": { + "type": "string", + "description": "Why the entity was marked incorrect, when the verifier supplied one", + "example": "Ownership moved to the payments team" + }, + "status": { + "type": "string", + "description": "PENDING until someone verifies the entity for this period, then the answer they gave", + "example": "VERIFIED_CORRECT", + "enum": [ + "PENDING", + "VERIFIED_CORRECT", + "VERIFIED_INCORRECT" + ] + }, + "verifiedAt": { + "type": "string", + "description": "When the entity was verified", + "format": "date-time" + }, + "verifiedByApiKey": { + "$ref": "#/components/schemas/ApiKeyVerifier" + }, + "verifiedByUser": { + "$ref": "#/components/schemas/CortexUserSummary" + } + }, + "description": "One entity\u0027s status for one verification period, with the entity named" + }, "ErrorResponse": { "required": [ "message", @@ -23268,6 +38186,9 @@ "details": { "type": "string" }, + "errorCode": { + "type": "string" + }, "gatewayHttpStatus": { "type": "integer", "format": "int32" @@ -23314,7 +38235,8 @@ "UNHANDLED_EXCEPTION", "UNCATEGORIZED", "SERVICE_CREATOR", - "UNKNOWN_HOST" + "UNKNOWN_HOST", + "TOO_MANY_REQUESTS" ] } } @@ -23361,7 +38283,7 @@ "type": "string" } }, - "description": "API key or person who requested, approved, or rejected the exemption", + "description": "API key or person who approved the exemption before it was revoked. Only set when the status is REVOKED", "discriminator": { "mapping": { "API": "#/components/schemas/RuleExemptionApiActor", @@ -23384,9 +38306,17 @@ ], "type": "object", "properties": { + "approvedBy": { + "$ref": "#/components/schemas/ExemptionActor" + }, + "approvedDate": { + "type": "string", + "description": "Date on which the exemption was approved before it was revoked. Only set when the status is REVOKED", + "format": "date-time" + }, "date": { "type": "string", - "description": "Date on which the exemption was approved or rejected. Null if the status is pending", + "description": "Date on which the exemption was approved, rejected, or revoked. Null if the status is pending", "format": "date-time" }, "handledBy": { @@ -23394,9 +38324,10 @@ }, "status": { "type": "string", - "description": "Status of the exemption. Possible values are APPROVED, REJECTED, and PENDING" + "description": "Status of the exemption. Possible values are APPROVED, REJECTED, PENDING, REVOKED, and EXPIRED" } - } + }, + "description": "Status of the exemption, which describes whether it is approved, rejected, pending, revoked, or expired" }, "ExemptionsSettings": { "required": [ @@ -23421,7 +38352,8 @@ "Fallback": { "required": [ "name", - "slug" + "slug", + "type" ], "type": "object", "properties": { @@ -23436,10 +38368,34 @@ "slug": { "type": "string", "description": "The slug of the branch" + }, + "type": { + "type": "string", + "description": "Must be `FALLBACK`", + "enum": [ + "FALLBACK" + ] } }, "description": "The fallback branch that will be taken if no other branches evaluate to `true`" }, + "FallbackFields": { + "type": "object", + "properties": { + "fieldOnChildNode": { + "$ref": "#/components/schemas/Base" + }, + "fieldOnParentNode": { + "$ref": "#/components/schemas/OptionalList" + }, + "teamId": { + "$ref": "#/components/schemas/Base" + }, + "teamName": { + "$ref": "#/components/schemas/Base" + } + } + }, "Filter": { "type": "object", "properties": { @@ -23454,7 +38410,29 @@ "$ref": "#/components/schemas/TypeFilter" } }, - "description": "Filter applied to the Initiative" + "description": "Filter that selects the entities in the catalog, for `FILTER` catalogs" + }, + "FilterDefinedPeerComparison": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/PointInTimeComparison" + }, + { + "required": [ + "peerFilters" + ], + "type": "object", + "properties": { + "peerFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeFilterObject" + } + } + } + } + ] }, "FilterOption": { "required": [ @@ -23464,6 +38442,18 @@ ], "type": "object", "properties": { + "canonicalName": { + "type": "string", + "description": "Canonical dimension name before source-specific overrides (e.g. \u0027User\u0027 instead of \u0027Author\u0027)" + }, + "dimensionRole": { + "type": "string", + "description": "Role of this dimension in the source context (e.g. \u0027Authors\u0027, \u0027Reviewers\u0027, \u0027Assignees\u0027)" + }, + "dimensionRoleGroup": { + "type": "string", + "description": "Optional grouping key for dimensions that share a canonical concept across roles (e.g. \u0027User\u0027 groups Author / Reviewer / Assignee)" + }, "displayName": { "type": "string", "description": "Human-readable label for this filter" @@ -23479,6 +38469,28 @@ }, "description": "Available filtering options for querying metrics" }, + "FirehydrantConfiguration": { + "required": [ + "lastFour" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + } + } + }, + "FirehydrantConfigurationRequest": { + "required": [ + "apiToken" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + } + } + }, "FullMetricDefinition": { "required": [ "displayName", @@ -23522,6 +38534,7 @@ "description": "Available aggregation functions for this metric (e.g., SUM, AVG, COUNT)", "items": { "type": "string", + "description": "Available aggregation functions for this metric (e.g., SUM, AVG, COUNT)", "enum": [ "SUM", "AVG", @@ -23531,12 +38544,16 @@ "MAX", "P50", "P95", - "RANKING" + "RANKING", + "COLLECT", + "COLLECT_UNIQUE", + "COUNT_UNIQUE", + "LATEST" ] } }, "timeAttribute": { - "$ref": "#/components/schemas/Attribute1" + "$ref": "#/components/schemas/Attribute" }, "type": { "type": "string", @@ -23565,16 +38582,16 @@ "description": "List of available metric definitions with full metadata" }, "FullMetricDefinitionsResponse": { - "required": [ - "metrics", - "sources" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/MetricDefinitionsResponse" }, { + "required": [ + "metrics", + "sources" + ], "type": "object", "properties": { "metrics": { @@ -23599,17 +38616,17 @@ ] }, "GCP": { - "required": [ - "projectId", - "resourceName", - "resourceType" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "projectId", + "resourceName", + "resourceType" + ], "type": "object", "properties": { "projectId": { @@ -23671,15 +38688,15 @@ ] }, "GITHUB": { - "required": [ - "repoName" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "repoName" + ], "type": "object", "properties": { "alias": { @@ -23696,15 +38713,15 @@ ] }, "GITLAB": { - "required": [ - "projectId" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "projectId" + ], "type": "object", "properties": { "alias": { @@ -23721,9 +38738,6 @@ ] }, "GLOBAL": { - "required": [ - "type" - ], "type": "object", "allOf": [ { @@ -23902,7 +38916,8 @@ "properties": { "provider": { "type": "string", - "description": "Git provider (GitHub, GitLab, etc.)", + "description": "Name of the Git provider", + "example": "GITHUB", "enum": [ "AZURE_DEVOPS", "BITBUCKET", @@ -23994,6 +39009,35 @@ } } }, + "Github": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ScaffolderPublisherOptions" + }, + { + "required": [ + "sparseCheckout" + ], + "type": "object", + "properties": { + "sparseCheckout": { + "type": "boolean", + "description": "Whether the destination is cloned with sparse checkout" + }, + "visibility": { + "type": "string", + "description": "Visibility of the created repository", + "enum": [ + "PUBLIC", + "PRIVATE", + "INTERNAL" + ] + } + } + } + ] + }, "GithubAppRequest": { "required": [ "alias", @@ -24099,11 +39143,6 @@ }, "GithubConfigurationResponse.APP": { "title": "APP", - "required": [ - "alias", - "isDefault", - "type" - ], "type": "object", "allOf": [ { @@ -24124,11 +39163,6 @@ }, "GithubConfigurationResponse.PERSONAL_ACCESS_TOKEN": { "title": "PERSONAL_ACCESS_TOKEN", - "required": [ - "alias", - "isDefault", - "type" - ], "type": "object", "allOf": [ { @@ -24136,6 +39170,27 @@ } ] }, + "Gitlab": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ScaffolderPublisherOptions" + }, + { + "type": "object", + "properties": { + "visibility": { + "type": "string", + "description": "Visibility of the created repository", + "enum": [ + "PUBLIC", + "PRIVATE" + ] + } + } + } + ] + }, "GitlabConfiguration": { "required": [ "alias", @@ -24228,9 +39283,20 @@ }, "isDefault": { "type": "boolean" + }, + "personalAccessToken": { + "type": "string" } } }, + "Global": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ApiKeySummary" + } + ] + }, "GroupByOption": { "required": [ "displayName", @@ -24238,6 +39304,18 @@ ], "type": "object", "properties": { + "canonicalName": { + "type": "string", + "description": "Canonical dimension name before source-specific overrides (e.g. \u0027User\u0027 instead of \u0027Author\u0027)" + }, + "dimensionRole": { + "type": "string", + "description": "Role of this dimension in the source context (e.g. \u0027Authors\u0027, \u0027Reviewers\u0027, \u0027Assignees\u0027)" + }, + "dimensionRoleGroup": { + "type": "string", + "description": "Optional grouping key for dimensions that share a canonical concept across roles (e.g. \u0027User\u0027 groups Author / Reviewer / Assignee)" + }, "displayName": { "type": "string", "description": "Human-readable label for this grouping" @@ -24326,6 +39404,82 @@ } } }, + "HarnessConfiguration": { + "required": [ + "accountId", + "alias", + "isDefault", + "lastFourApiKey" + ], + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFourApiKey": { + "type": "string" + } + } + }, + "HarnessConfigurationRequest": { + "required": [ + "accountId", + "alias", + "apiKey", + "isDefault" + ], + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, + "HarnessUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "accountId": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, "HierarchyChildNode": { "required": [ "children", @@ -24368,6 +39522,21 @@ }, "description": "Child at the current depth, and its children." }, + "HierarchyColumns": { + "required": [ + "fieldOnChildNode", + "fieldOnParentNode" + ], + "type": "object", + "properties": { + "fieldOnChildNode": { + "$ref": "#/components/schemas/Base" + }, + "fieldOnParentNode": { + "$ref": "#/components/schemas/OptionalList" + } + } + }, "HierarchyParentNode": { "required": [ "id", @@ -24414,15 +39583,15 @@ "type": "object" }, "INSTANA": { - "required": [ - "label" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "label" + ], "type": "object", "properties": { "label": { @@ -24543,6 +39712,9 @@ "alias": { "type": "string" }, + "apiKey": { + "type": "string" + }, "isDefault": { "type": "boolean" } @@ -24580,6 +39752,8 @@ }, "Initiative": { "required": [ + "dateCreated", + "dateUpdated", "emphasizedLevels", "emphasizedRules", "isDraft", @@ -24595,6 +39769,16 @@ "description": "Unique, immutable, 18-character auto-generated identifier for the Initiative.", "example": "in2da8159dbeefb974" }, + "dateCreated": { + "type": "string", + "description": "Time the Initiative was created", + "format": "date-time" + }, + "dateUpdated": { + "type": "string", + "description": "Time the Initiative was last updated", + "format": "date-time" + }, "description": { "type": "string", "description": "Optional description of the Initiative" @@ -24770,6 +39954,36 @@ } } }, + "InstanaConfigurationRequest": { + "required": [ + "apiToken", + "endpoint" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "endpoint": { + "type": "string" + } + } + }, + "InstanaConfigurationResponse": { + "required": [ + "endpoint", + "lastFour" + ], + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "lastFour": { + "type": "string" + } + } + }, "IntegrationConfigValidation": { "required": [ "isValid" @@ -24787,6 +40001,162 @@ } } }, + "IntegrationStatus": { + "required": [ + "categories", + "integrationType", + "validation" + ], + "type": "object", + "properties": { + "alias": { + "type": "string", + "description": "Configuration alias; null for integrations that support a single configuration" + }, + "categories": { + "type": "array", + "description": "Categories this configuration is used for", + "items": { + "type": "string", + "description": "Categories this configuration is used for", + "enum": [ + "AI", + "CI_CD", + "CLOUD_INFRASTRUCTURE", + "CODE_QUALITY", + "COMMUNICATION", + "ERROR_TRACKING", + "FEATURE_MANAGEMENT", + "INCIDENT_MANAGEMENT", + "OBSERVABILITY", + "ON_CALL", + "PROJECT_MANAGEMENT", + "SECURITY", + "TEAMS", + "VERSION_CONTROL", + "ITSM" + ] + } + }, + "integrationType": { + "type": "string", + "description": "Integration type", + "enum": [ + "AITools", + "ActiveDirectory", + "Apiiro", + "ArgoCD", + "APM", + "AWS", + "AzureDevops", + "AzureResources", + "BambooHR", + "Bitbucket", + "Bugsnag", + "Buildkite", + "Checkmarx", + "Clickup", + "CircleCi", + "Codecov", + "Coralogix", + "Datadog", + "Dynatrace", + "ECS", + "Firehydrant", + "Forge", + "Git", + "GitHub", + "GitLab", + "Google", + "Harness", + "IncidentIo", + "IncidentResponse", + "Instana", + "Internal", + "Jenkins", + "Jira", + "K8s", + "LaunchDarkly", + "Lightstep", + "Mend", + "MendSca", + "MicrosoftTeams", + "NewRelic", + "Oncall", + "Okta", + "Opsgenie", + "OwnershipProvider", + "Pagerduty", + "Prometheus", + "Rollbar", + "Rootly", + "Security", + "ServiceNow", + "Sentry", + "Semgrep", + "SignalFX", + "Slack", + "SLO", + "Snyk", + "Sonarqube", + "SumoLogic", + "Veracode", + "Victorops", + "Workday", + "Wiz", + "XMatters", + "Anthropic" + ] + }, + "validation": { + "$ref": "#/components/schemas/IntegrationValidation" + } + }, + "description": "Installed integration configurations, one entry per alias" + }, + "IntegrationStatusesResponse": { + "required": [ + "integrations" + ], + "type": "object", + "properties": { + "integrations": { + "type": "array", + "description": "Installed integration configurations, one entry per alias", + "items": { + "$ref": "#/components/schemas/IntegrationStatus" + } + } + } + }, + "IntegrationValidation": { + "required": [ + "status" + ], + "type": "object", + "properties": { + "lastValidatedAt": { + "type": "string", + "description": "When the connection was last checked, as a UTC ISO-8601 instant. This is not a data sync time. Null if the connection has never been checked", + "format": "date-time", + "example": "2026-10-01T08:00:00Z" + }, + "message": { + "type": "string", + "description": "Detail from the most recent connection check, usually the failure, truncated to 500 characters. Unsanitized vendor error text, so only returned to callers with the Manage Integrations permission; null for everyone else" + }, + "status": { + "type": "string", + "description": "VALID or INVALID from a connection check in the last 3 days; UNKNOWN when the integration has no connection check or the last one is older than that", + "enum": [ + "VALID", + "INVALID", + "UNKNOWN" + ] + } + }, + "description": "Result of the most recent connection check" + }, "InvalidIpAllowlistEntry": { "required": [ "address", @@ -24879,26 +40249,391 @@ } } }, - "JavaScript": { - "required": [ - "script", - "type" - ], + "JavaScript": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/VariableSource" + }, + { + "required": [ + "script", + "type" + ], + "type": "object", + "properties": { + "script": { + "type": "string", + "description": "The JavaScript script that returns the value. It runs as the body of `run(actions, context, variables)`." + }, + "type": { + "type": "string" + } + } + } + ] + }, + "JenkinsConfiguration": { + "required": [ + "alias", + "host", + "isDefault", + "lastFour", + "username" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "JenkinsConfigurationRequest": { + "required": [ + "alias", + "apiKey", + "host", + "isDefault", + "username" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "username": { + "type": "string" + } + } + }, + "JenkinsUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "username": { + "type": "string" + } + } + }, + "JiraCloudBasicRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/JiraConfigurationRequest" + }, + { + "required": [ + "apiToken", + "baseUrl", + "email", + "subdomain" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "enum": [ + "JIRA", + "ATLASSIAN", + "ATLASSIAN_API" + ] + }, + "email": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + } + } + ] + }, + "JiraCloudBasicUpdateRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/JiraUpdateRequest" + }, + { + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "enum": [ + "JIRA", + "ATLASSIAN", + "ATLASSIAN_API" + ] + }, + "email": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + } + } + ] + }, + "JiraCloudScopedRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/JiraConfigurationRequest" + }, + { + "required": [ + "apiToken", + "baseUrl", + "cloudId", + "email", + "subdomain" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "enum": [ + "JIRA", + "ATLASSIAN", + "ATLASSIAN_API" + ] + }, + "cloudId": { + "type": "string" + }, + "email": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + } + } + ] + }, + "JiraCloudScopedUpdateRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/JiraUpdateRequest" + }, + { + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "enum": [ + "JIRA", + "ATLASSIAN", + "ATLASSIAN_API" + ] + }, + "cloudId": { + "type": "string" + }, + "email": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + } + } + ] + }, + "JiraConfigurationRequest": { + "required": [ + "alias", + "isDefault", + "type" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type" + } + }, + "JiraConfigurationResponse": { + "required": [ + "alias", + "isDefault", + "type" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "enum": [ + "JIRA", + "ATLASSIAN", + "ATLASSIAN_API" + ] + }, + "email": { + "type": "string" + }, + "frontendHost": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + }, + "subdomain": { + "type": "string" + }, + "type": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "JiraOnPremBasicRequest": { "type": "object", "allOf": [ { - "$ref": "#/components/schemas/VariableSource" + "$ref": "#/components/schemas/JiraConfigurationRequest" }, { + "required": [ + "host", + "password", + "username" + ], "type": "object", "properties": { - "script": { + "frontendHost": { + "type": "string" + }, + "host": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + } + ] + }, + "JiraOnPremBasicUpdateRequest": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/JiraUpdateRequest" + }, + { + "type": "object", + "properties": { + "frontendHost": { + "type": "string" + }, + "host": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { "type": "string" } } } ] }, + "JiraUpdateRequest": { + "required": [ + "alias", + "isDefault", + "type" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type" + } + }, "JsonDescriptorsListResponse": { "required": [ "descriptors", @@ -24935,16 +40670,16 @@ "type": "object" }, "K8S": { - "required": [ - "identifier", - "k8sType" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "identifier", + "k8sType" + ], "type": "object", "properties": { "identifier": { @@ -24963,35 +40698,92 @@ } ] }, - "LAMBDA": { + "K8sCatalogResponse": { "required": [ - "arn" + "page", + "resources", + "total", + "totalPages" ], "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/EntityDiscoveryKey" + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" }, - { - "type": "object", - "properties": { - "arn": { - "type": "string" - } + "resources": { + "type": "array", + "description": "List of Kubernetes resources associated with this entity", + "items": { + "$ref": "#/components/schemas/K8sResource" } + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" } - ] + } }, - "LIGHTSTEP": { + "K8sResource": { "required": [ - "name" + "details", + "lastUpdated", + "name", + "namespace", + "type" ], + "type": "object", + "properties": { + "cluster": { + "type": "string", + "description": "Kubernetes cluster name" + }, + "details": { + "$ref": "#/components/schemas/JsonNode" + }, + "lastUpdated": { + "type": "string", + "description": "Timestamp when this resource was last updated", + "format": "date-time" + }, + "name": { + "type": "string", + "description": "Resource name" + }, + "namespace": { + "type": "string", + "description": "Kubernetes namespace" + }, + "type": { + "type": "string", + "description": "Resource type", + "enum": [ + "DEPLOYMENT", + "STATEFUL_SET", + "ARGO_ROLLOUT", + "CRON_JOB" + ] + } + }, + "description": "List of Kubernetes resources associated with this entity" + }, + "LIGHTSTEP": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "name" + ], "type": "object", "properties": { "name": { @@ -25073,11 +40865,59 @@ "alias": { "type": "string" }, + "apiKey": { + "type": "string" + }, + "environment": { + "type": "string", + "enum": [ + "DEFAULT", + "FEDERAL" + ] + }, "isDefault": { "type": "boolean" } } }, + "LightstepConfigurationRequest": { + "required": [ + "authToken", + "organizationId", + "projectId" + ], + "type": "object", + "properties": { + "authToken": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "projectId": { + "type": "string" + } + } + }, + "LightstepConfigurationResponse": { + "required": [ + "lastFour", + "organizationId", + "projectId" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "projectId": { + "type": "string" + } + } + }, "Link": { "required": [ "name", @@ -25170,6 +41010,50 @@ }, "description": "List of all catalog entities, including services, resources, and domains. Use the \\\"type\\\" field to determine what type each entity is." }, + "ListEntityVerifications": { + "required": [ + "page", + "total", + "totalPages", + "verifications" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + }, + "verifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityVerification" + } + } + }, + "description": "A page of an entity\u0027s verification statuses" + }, + "ListKey": { + "required": [ + "columnName" + ], + "type": "object", + "properties": { + "columnName": { + "type": "string" + } + } + }, "ListRelationships": { "required": [ "page", @@ -25203,6 +41087,72 @@ }, "description": "List of related entities." }, + "ListVerificationPeriods": { + "required": [ + "page", + "periods", + "total", + "totalPages" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "periods": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerificationPeriodSummary" + } + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + } + }, + "description": "A page of verification periods" + }, + "ListVerifications": { + "required": [ + "page", + "total", + "totalPages", + "verifications" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + }, + "verifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EntityVerificationWithEntity" + } + } + }, + "description": "A page of verifications from across the catalog" + }, "Member": { "required": [ "id", @@ -25230,6 +41180,98 @@ } } }, + "MendSastConfiguration": { + "required": [ + "lastFour" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + } + } + }, + "MendSastConfigurationRequest": { + "required": [ + "apiKey" + ], + "type": "object", + "properties": { + "apiKey": { + "type": "string" + } + } + }, + "MendScaConfigurationRequest": { + "required": [ + "orgKey", + "orgType", + "urlType", + "userKey" + ], + "type": "object", + "properties": { + "orgKey": { + "type": "string" + }, + "orgType": { + "type": "string", + "enum": [ + "SINGLE", + "GLOBAL" + ] + }, + "urlCustomRoot": { + "type": "string" + }, + "urlType": { + "type": "string", + "enum": [ + "NEW", + "LEGACY", + "CUSTOM" + ] + }, + "userKey": { + "type": "string" + } + } + }, + "MendScaConfigurationResponse": { + "required": [ + "lastFourOrgKey", + "lastFourUserKey", + "orgType", + "urlType" + ], + "type": "object", + "properties": { + "lastFourOrgKey": { + "type": "string" + }, + "lastFourUserKey": { + "type": "string" + }, + "orgType": { + "type": "string", + "enum": [ + "SINGLE", + "GLOBAL" + ] + }, + "urlCustomRoot": { + "type": "string" + }, + "urlType": { + "type": "string", + "enum": [ + "NEW", + "LEGACY", + "CUSTOM" + ] + } + } + }, "Metadata": { "required": [ "key", @@ -25247,24 +41289,23 @@ }, "description": "Custom data key/values associated with the entity." }, - "MetricAggregate": { - "required": [ - "aggregationFunction", - "alias", - "metricKey", - "name", - "ordinal" - ], + "MetricAggregateColumn": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Column" }, { + "required": [ + "aggregationFunction", + "metricKey", + "ordinal" + ], "type": "object", "properties": { "aggregationFunction": { "type": "string", + "description": "Type of aggregation function applied to the metric", "enum": [ "SUM", "AVG", @@ -25274,7 +41315,11 @@ "MAX", "P50", "P95", - "RANKING" + "RANKING", + "COLLECT", + "COLLECT_UNIQUE", + "COUNT_UNIQUE", + "LATEST" ] }, "metricKey": { @@ -25308,14 +41353,38 @@ "MAX", "P50", "P95", - "RANKING" + "RANKING", + "COLLECT", + "COLLECT_UNIQUE", + "COUNT_UNIQUE", + "LATEST" + ] + }, + "density": { + "type": "string", + "enum": [ + "REQUIRED", + "OPTIONAL" ] }, + "endTime": { + "type": "string", + "format": "date-time" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeFilterObject" + } + }, "metric": { "type": "string" + }, + "startTime": { + "type": "string", + "format": "date-time" } - }, - "description": "Optional nested metrics for advanced queries" + } }, "MetricDefinition": { "required": [ @@ -25388,19 +41457,17 @@ "propertyName": "view" } }, - "MetricValue": { - "required": [ - "alias", - "metricKey", - "name", - "ordinal" - ], + "MetricValueColumn": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Column" }, { + "required": [ + "metricKey", + "ordinal" + ], "type": "object", "properties": { "metricKey": { @@ -25430,6 +41497,69 @@ } } }, + "MultipleConfigurationsResponseAnthropicConfiguration": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnthropicConfiguration" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "MultipleConfigurationsResponseApiiroConfiguration": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiiroConfiguration" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "MultipleConfigurationsResponseArgoCDConfiguration": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ArgoCDConfiguration" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, "MultipleConfigurationsResponseAzureDevopsConfiguration": { "required": [ "configurations", @@ -25472,6 +41602,27 @@ } } }, + "MultipleConfigurationsResponseBitbucketConfigurationResponse": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BitbucketConfigurationResponse" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, "MultipleConfigurationsResponseCircleCiConfiguration": { "required": [ "configurations", @@ -25556,6 +41707,27 @@ } } }, + "MultipleConfigurationsResponseHarnessConfiguration": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HarnessConfiguration" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, "MultipleConfigurationsResponseIncidentIoConfiguration": { "required": [ "configurations", @@ -25577,6 +41749,48 @@ } } }, + "MultipleConfigurationsResponseJenkinsConfiguration": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JenkinsConfiguration" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "MultipleConfigurationsResponseJiraConfigurationResponse": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JiraConfigurationResponse" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, "MultipleConfigurationsResponseLaunchDarklyConfiguration": { "required": [ "configurations", @@ -25640,6 +41854,27 @@ } } }, + "MultipleConfigurationsResponseSemgrepConfiguration": { + "required": [ + "configurations", + "skippedConfigurations" + ], + "type": "object", + "properties": { + "configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SemgrepConfiguration" + } + }, + "skippedConfigurations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, "MultipleConfigurationsResponseSonarqubeConfiguration": { "required": [ "configurations", @@ -25675,6 +41910,28 @@ } } }, + "MultipleTeamFieldsWorkdayReportMapping": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkdayReportMappingV2" + }, + { + "required": [ + "teams" + ], + "type": "object", + "properties": { + "teams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TeamFields" + } + } + } + } + ] + }, "MyWorkspaceItem": { "required": [ "itemType" @@ -25759,15 +42016,15 @@ "description": "Unified response containing workspace resources of various types (entities, teams, scorecards, etc.)" }, "NEWRELIC": { - "required": [ - "id" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "id" + ], "type": "object", "properties": { "id": { @@ -25777,6 +42034,37 @@ } ] }, + "NestedAggregation": { + "required": [ + "aggregations", + "groupBy" + ], + "type": "object", + "properties": { + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricAggregation" + } + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeFilterObject" + } + }, + "groupBy": { + "type": "array", + "items": { + "type": "string" + } + }, + "timeAttribute": { + "type": "string" + } + }, + "description": "Nested aggregations for advanced sub-queries" + }, "NewrelicConfiguration": { "required": [ "alias", @@ -25847,11 +42135,25 @@ ], "type": "object", "properties": { + "accountId": { + "type": "integer", + "format": "int32" + }, "alias": { "type": "string" }, "isDefault": { "type": "boolean" + }, + "personalKey": { + "type": "string" + }, + "region": { + "type": "string", + "enum": [ + "US", + "EU" + ] } } }, @@ -25903,6 +42205,12 @@ }, "hint": { "type": "string" + }, + "providerDocsUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProviderDocLink" + } } } } @@ -26048,7 +42356,10 @@ "VERIFICATION_PERIOD_REMINDER", "AI_ASSISTANT_WELCOME_MESSAGE", "ENTITY_SCORE_DROPPED", - "ONBOARDING_WIZARD_STATE_COMPLETED" + "ONBOARDING_WIZARD_STATE_COMPLETED", + "EXPORT_COMPLETED", + "OPEX_COMMENT_MENTION", + "OPEX_COMMENT_THREAD_ACTIVITY" ] } } @@ -26185,7 +42496,7 @@ }, "medium": { "type": "string", - "description": "The medium used to send the notification.", + "description": "The medium used to send the notifications.", "enum": [ "SLACK", "MICROSOFT_TEAMS", @@ -26202,7 +42513,7 @@ }, "notificationType": { "type": "string", - "description": "The type of the notification.", + "description": "The type of the notification", "enum": [ "INITIATIVE_CREATION", "INITIATIVE_CUSTOM_SCHEDULE", @@ -26227,7 +42538,10 @@ "VERIFICATION_PERIOD_REMINDER", "AI_ASSISTANT_WELCOME_MESSAGE", "ENTITY_SCORE_DROPPED", - "ONBOARDING_WIZARD_STATE_COMPLETED" + "ONBOARDING_WIZARD_STATE_COMPLETED", + "EXPORT_COMPLETED", + "OPEX_COMMENT_MENTION", + "OPEX_COMMENT_THREAD_ACTIVITY" ] }, "originalRunId": { @@ -26341,6 +42655,60 @@ }, "description": "Notification settings for the Scorecard" }, + "OktaConfigurationRequest": { + "required": [ + "apiToken", + "domain" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "groupTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "OKTA_GROUP", + "APP_GROUP", + "BUILT_IN", + "SDK_UNKNOWN" + ] + } + } + } + }, + "OktaConfigurationResponse": { + "required": [ + "domain", + "lastFour" + ], + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "groupTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "OKTA_GROUP", + "APP_GROUP", + "BUILT_IN", + "SDK_UNKNOWN" + ] + } + }, + "lastFour": { + "type": "string" + } + } + }, "OncallDetails": { "required": [ "escalations", @@ -26363,7 +42731,9 @@ "OPSGENIE", "PAGERDUTY", "VICTOROPS", - "XMATTERS" + "XMATTERS", + "INCIDENTIO", + "DATADOG" ] } } @@ -26390,7 +42760,9 @@ "OPSGENIE", "PAGERDUTY", "VICTOROPS", - "XMATTERS" + "XMATTERS", + "INCIDENTIO", + "DATADOG" ] }, "source": { @@ -26404,13 +42776,12 @@ }, "type": { "type": "string", + "description": "Type of registration", + "example": "ESCALATION_POLICY, SCHEDULE, SERVICE", "enum": [ - "CQL_FILTER", - "SERVICE_FILTER", - "RESOURCE_FILTER", - "DOMAIN_FILTER", - "TEAM_FILTER", - "COMPOUND_FILTER" + "ESCALATION_POLICY", + "SCHEDULE", + "SERVICE" ] } } @@ -26458,18 +42829,56 @@ }, "description": "Request for user\u0027s open pull requests across all Git repositories" }, - "Option": { + "OpsgenieConfiguration": { "required": [ - "inputKey", - "outputVariable", - "type" + "isEu", + "lastFour", + "subdomain" ], + "type": "object", + "properties": { + "isEu": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + }, + "subdomain": { + "type": "string" + } + } + }, + "OpsgenieConfigurationRequest": { + "required": [ + "apiToken", + "isEu", + "subdomain" + ], + "type": "object", + "properties": { + "apiToken": { + "type": "string" + }, + "isEu": { + "type": "boolean" + }, + "subdomain": { + "type": "string" + } + } + }, + "Option": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/InputOverride" }, { + "required": [ + "inputKey", + "outputVariable", + "type" + ], "type": "object", "properties": { "inputKey": { @@ -26478,7 +42887,7 @@ }, "outputVariable": { "type": "string", - "description": "The path to the override value in the workflow context" + "description": "The path to the override value, as a dot path into the run data that starts with `context`, `actions` or `variables`, e.g. `variables.team-tags`." }, "type": { "type": "string" @@ -26487,6 +42896,21 @@ } ] }, + "OptionalList": { + "required": [ + "columnName", + "isList" + ], + "type": "object", + "properties": { + "columnName": { + "type": "string" + }, + "isList": { + "type": "boolean" + } + } + }, "OrderBy": { "required": [ "attribute", @@ -26505,7 +42929,7 @@ ] } }, - "description": "Sort order for results" + "description": "Ordering specification for results" }, "OwnerGroup": { "required": [ @@ -26720,6 +43144,75 @@ } } }, + "PaginatedResultWorkflowRunSummaryResponse": { + "required": [ + "hasMore", + "items", + "page", + "total", + "totalCapped", + "totalPages" + ], + "type": "object", + "properties": { + "hasMore": { + "type": "boolean" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WorkflowRunSummaryResponse" + } + }, + "page": { + "type": "integer", + "format": "int32" + }, + "total": { + "type": "integer", + "format": "int64" + }, + "totalCapped": { + "type": "boolean" + }, + "totalPages": { + "type": "integer", + "format": "int32" + } + } + }, + "PaginatedRuleExemptionsResponse": { + "required": [ + "exemptions", + "page", + "total", + "totalPages" + ], + "type": "object", + "properties": { + "exemptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleExemptionDetails" + } + }, + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + } + } + }, "PaginatedScorecardsResponse": { "required": [ "page", @@ -26804,6 +43297,22 @@ } } }, + "Personal": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ApiKeySummary" + }, + { + "type": "object", + "properties": { + "user": { + "$ref": "#/components/schemas/CortexUserSummary" + } + } + } + ] + }, "PluginMetadata": { "required": [ "contexts", @@ -26958,6 +43467,21 @@ } } }, + "PointInTimeComparison": { + "required": [ + "type" + ], + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "description": "Optional comparison to previous time period", + "discriminator": { + "propertyName": "type" + } + }, "PointInTimeResponse": { "required": [ "metadata", @@ -26970,10 +43494,50 @@ }, "rows": { "type": "array", - "description": "Result rows containing metric values and dimensions - each row corresponds to the columns in metadata", + "description": "Result rows, one array per grouping. Cells are positional: the value at index i corresponds to `metadata.columns[i]`, and its JSON type follows that column\u0027s type (string, number, boolean, or null). Rows are not keyed by column name.", + "example": [ + [ + "platform-team", + 12.5, + 30 + ], + [ + "payments-team", + 8.0, + 17 + ] + ], "items": { - "type": "object", - "description": "Result rows containing metric values and dimensions - each row corresponds to the columns in metadata" + "type": "array", + "description": "Result rows, one array per grouping. Cells are positional: the value at index i corresponds to `metadata.columns[i]`, and its JSON type follows that column\u0027s type (string, number, boolean, or null). Rows are not keyed by column name.", + "example": [ + [ + "platform-team", + 12.5, + 30 + ], + [ + "payments-team", + 8.0, + 17 + ] + ], + "items": { + "type": "object", + "description": "Result rows, one array per grouping. Cells are positional: the value at index i corresponds to `metadata.columns[i]`, and its JSON type follows that column\u0027s type (string, number, boolean, or null). Rows are not keyed by column name.", + "example": [ + [ + "platform-team", + 12.5, + 30 + ], + [ + "payments-team", + 8.0, + 17 + ] + ] + } } } } @@ -27048,28 +43612,39 @@ "alias": { "type": "string" }, + "host": { + "type": "string" + }, "isDefault": { "type": "boolean" + }, + "password": { + "type": "string" + }, + "prometheusTenantId": { + "type": "string" + }, + "username": { + "type": "string" } } }, - "PullRequest": { + "ProviderDocLink": { "required": [ - "dateOpened", - "entityCids", - "entityIds", - "isComplex", - "isDraft", - "isOld", - "isQuick", - "lastUpdated", - "numComments", - "numReviewers", - "pullRequest", - "repository", - "source", - "status" + "provider", + "url" ], + "type": "object", + "properties": { + "provider": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "PullRequest": { "type": "object", "description": "Pull request authored by the user", "allOf": [ @@ -27077,6 +43652,22 @@ "$ref": "#/components/schemas/MyWorkspaceItem" }, { + "required": [ + "dateOpened", + "entityCids", + "entityIds", + "isComplex", + "isDraft", + "isOld", + "isQuick", + "lastUpdated", + "numComments", + "numReviewers", + "pullRequest", + "repository", + "source", + "status" + ], "type": "object", "properties": { "dateOpened": { @@ -27241,25 +43832,32 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/Attribute" + "$ref": "#/components/schemas/AggregatedAttributeColumn" }, { - "$ref": "#/components/schemas/EntityReference" + "$ref": "#/components/schemas/AttributeColumn" }, { - "$ref": "#/components/schemas/MetricAggregate" + "$ref": "#/components/schemas/EntityReferenceColumn" }, { - "$ref": "#/components/schemas/MetricValue" + "$ref": "#/components/schemas/MetricAggregateColumn" }, { - "$ref": "#/components/schemas/TimeWindow" + "$ref": "#/components/schemas/MetricValueColumn" }, { - "$ref": "#/components/schemas/Url" + "$ref": "#/components/schemas/TimeWindowColumn" + }, + { + "$ref": "#/components/schemas/UrlColumn" } ] } + }, + "nextPage": { + "type": "string", + "description": "Cursor for the next page, or null when this is the last page. Pass it back as the request\u0027s nextPage." } }, "description": "Query metadata describing the structure of returned columns" @@ -27319,9 +43917,6 @@ } }, "RESOURCE_FILTER": { - "required": [ - "type" - ], "type": "object", "allOf": [ { @@ -27364,19 +43959,23 @@ ] }, "Reference": { - "required": [ - "path", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/VariableSource" }, { + "required": [ + "path", + "type" + ], "type": "object", "properties": { "path": { + "type": "string", + "description": "The path to the value, as a dot path into the run data that starts with `context`, `actions` or `variables`, e.g. `actions.fetch.outputs.body`." + }, + "type": { "type": "string" } } @@ -27489,22 +44088,6 @@ "description": "List of restriction policies for the workflow" }, "ReviewRequest": { - "required": [ - "dateOpened", - "entityCids", - "entityIds", - "isComplex", - "isDraft", - "isOld", - "isQuick", - "lastUpdated", - "numComments", - "numReviewers", - "pullRequest", - "repository", - "source", - "status" - ], "type": "object", "description": "Pull request where the user is requested as a reviewer", "allOf": [ @@ -27512,6 +44095,22 @@ "$ref": "#/components/schemas/MyWorkspaceItem" }, { + "required": [ + "dateOpened", + "entityCids", + "entityIds", + "isComplex", + "isDraft", + "isOld", + "isQuick", + "lastUpdated", + "numComments", + "numReviewers", + "pullRequest", + "repository", + "source", + "status" + ], "type": "object", "properties": { "dateOpened": { @@ -27609,6 +44208,23 @@ } ] }, + "RevokeRuleExemptionRequest": { + "required": [ + "reason", + "ruleIdentifier" + ], + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "Reason for revoking the exemption" + }, + "ruleIdentifier": { + "type": "string", + "description": "Identifier of the Scorecard rule" + } + } + }, "Role": { "required": [ "name" @@ -27627,6 +44243,103 @@ } } }, + "RollbarConfiguration": { + "required": [ + "lastFour", + "organizationSlug" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "RollbarConfigurationRequest": { + "required": [ + "accessToken", + "organizationSlug" + ], + "type": "object", + "properties": { + "accessToken": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "RootTeam": { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "RootlyConfiguration": { + "required": [ + "alias", + "isDefault", + "lastFour" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + } + } + }, + "RootlyConfigurationRequest": { + "required": [ + "alias", + "apiKey", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, + "RootlyUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + } + } + }, "Rule": { "required": [ "expression" @@ -27648,10 +44361,6 @@ } }, "RuleExemptionApiActor": { - "required": [ - "apiKeyLast4", - "type" - ], "type": "object", "description": "Api key used to request, approve or reject the exemption", "allOf": [ @@ -27659,6 +44368,9 @@ "$ref": "#/components/schemas/ExemptionActor" }, { + "required": [ + "apiKeyLast4" + ], "type": "object", "properties": { "apiKeyLast4": { @@ -27735,6 +44447,88 @@ } } }, + "RuleExemptionDetails": { + "required": [ + "entityName", + "entityTag", + "exemptionStatus", + "id", + "requestedApprovers", + "requestedBy", + "requestedDate", + "requestingReason", + "ruleExpression", + "ruleIdentifier", + "scorecardName", + "scorecardTag" + ], + "type": "object", + "properties": { + "endDate": { + "type": "string", + "description": "Date on which the exemption will expire. Null if there is no expiration date", + "format": "date-time", + "nullable": true + }, + "entityName": { + "type": "string", + "description": "Name of the exempted entity" + }, + "entityTag": { + "type": "string", + "description": "Tag (`x-cortex-tag`) of the exempted entity" + }, + "exemptionStatus": { + "$ref": "#/components/schemas/ExemptionStatus" + }, + "id": { + "type": "integer", + "description": "Unique identifier of the exemption", + "format": "int64" + }, + "requestedApprovers": { + "type": "array", + "description": "Emails of the users asked to approve the exemption", + "items": { + "type": "string", + "description": "Emails of the users asked to approve the exemption" + } + }, + "requestedBy": { + "$ref": "#/components/schemas/ExemptionActor" + }, + "requestedDate": { + "type": "string", + "description": "Date on which the exemption was requested", + "format": "date-time" + }, + "requestingReason": { + "type": "string", + "description": "Reason supplied for requesting the exemption" + }, + "ruleExpression": { + "type": "string", + "description": "CQL representation of the rule" + }, + "ruleIdentifier": { + "type": "string", + "description": "Identifier of the rule" + }, + "ruleTitle": { + "type": "string", + "description": "Title of the rule", + "nullable": true + }, + "scorecardName": { + "type": "string", + "description": "Name of the Scorecard the rule belongs to" + }, + "scorecardTag": { + "type": "string", + "description": "Tag of the Scorecard the rule belongs to" + } + } + }, "RuleExemptionRequest": { "required": [ "reason", @@ -27759,11 +44553,6 @@ } }, "RuleExemptionUserActor": { - "required": [ - "email", - "name", - "type" - ], "type": "object", "description": "Person who requested, approved or rejected the exemption", "allOf": [ @@ -27771,6 +44560,10 @@ "$ref": "#/components/schemas/ExemptionActor" }, { + "required": [ + "email", + "name" + ], "type": "object", "properties": { "email": { @@ -27807,16 +44600,16 @@ } }, "SERVICENOW": { - "required": [ - "id", - "tableName" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/EntityDiscoveryKey" }, { + "required": [ + "id", + "tableName" + ], "type": "object", "properties": { "id": { @@ -27830,9 +44623,6 @@ ] }, "SERVICE_FILTER": { - "required": [ - "type" - ], "type": "object", "allOf": [ { @@ -27934,6 +44724,267 @@ } } }, + "ScaffolderListResponse": { + "required": [ + "page", + "scaffolders", + "total", + "totalPages" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "scaffolders": { + "type": "array", + "description": "List of Scaffolder templates", + "items": { + "$ref": "#/components/schemas/ScaffolderResponse" + } + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + } + } + }, + "ScaffolderPublisherOptions": { + "required": [ + "provider" + ], + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "The git provider the options apply to", + "enum": [ + "GITHUB", + "GITLAB", + "BITBUCKET", + "AZUREDEVOPS" + ] + } + }, + "description": "Options applied to the repository the Scaffolder publishes to", + "discriminator": { + "propertyName": "provider" + } + }, + "ScaffolderRequest": { + "required": [ + "createYamlFile", + "labels", + "name", + "repoLocator", + "requireNewService", + "requirePullRequest", + "showReadme", + "strictAliasUsage", + "type" + ], + "type": "object", + "properties": { + "createYamlFile": { + "type": "boolean", + "description": "Whether a cortex.yaml is generated for the created entity. Defaults to `true`" + }, + "description": { + "type": "string", + "description": "Description of the Scaffolder template" + }, + "labels": { + "type": "array", + "description": "Descriptive labels used to group templates in the UI", + "items": { + "type": "string", + "description": "Descriptive labels used to group templates in the UI" + } + }, + "name": { + "type": "string", + "description": "Display name of the Scaffolder template" + }, + "publisherOptions": { + "oneOf": [ + { + "$ref": "#/components/schemas/AzureDevops" + }, + { + "$ref": "#/components/schemas/Bitbucket" + }, + { + "$ref": "#/components/schemas/Github" + }, + { + "$ref": "#/components/schemas/Gitlab" + } + ] + }, + "repoLocator": { + "oneOf": [ + { + "$ref": "#/components/schemas/AzureDevops" + }, + { + "$ref": "#/components/schemas/Bitbucket" + }, + { + "$ref": "#/components/schemas/Github" + }, + { + "$ref": "#/components/schemas/Gitlab" + } + ] + }, + "requireNewService": { + "type": "boolean", + "description": "Whether running the template must create a new entity. Defaults to `true`" + }, + "requirePullRequest": { + "type": "boolean", + "description": "Whether the template publishes via a pull request to an existing repository. Defaults to `false`" + }, + "showReadme": { + "type": "boolean", + "description": "Whether the template repository\u0027s README is shown before a run. Defaults to `false`" + }, + "strictAliasUsage": { + "type": "boolean", + "description": "Whether runs are restricted to the git configuration alias the template names. Defaults to `true`" + }, + "tag": { + "type": "string", + "description": "Stable, human-readable identifier, unique within the workspace. Lowercase letters, numbers, and dashes; may not start or end with a dash. Derived from the name when omitted on creation; an existing template keeps its tag unless a new one is provided." + }, + "type": { + "type": "string", + "description": "The templating engine of the template", + "enum": [ + "COOKIECUTTER" + ] + } + } + }, + "ScaffolderResponse": { + "required": [ + "createYamlFile", + "createdAt", + "id", + "labels", + "name", + "repoLocator", + "requireNewService", + "requirePullRequest", + "showReadme", + "strictAliasUsage", + "tag", + "type", + "updatedAt" + ], + "type": "object", + "properties": { + "createYamlFile": { + "type": "boolean", + "description": "Whether a cortex.yaml is generated for the created entity" + }, + "createdAt": { + "type": "string", + "description": "ISO-8601 timestamp at which the template was registered" + }, + "description": { + "type": "string", + "description": "Description of the Scaffolder template" + }, + "id": { + "type": "string", + "description": "Unique, auto-generated Cortex ID of the Scaffolder template" + }, + "labels": { + "type": "array", + "description": "Descriptive labels used to group templates in the UI", + "items": { + "type": "string", + "description": "Descriptive labels used to group templates in the UI" + } + }, + "name": { + "type": "string", + "description": "Display name of the Scaffolder template" + }, + "publisherOptions": { + "oneOf": [ + { + "$ref": "#/components/schemas/AzureDevops" + }, + { + "$ref": "#/components/schemas/Bitbucket" + }, + { + "$ref": "#/components/schemas/Github" + }, + { + "$ref": "#/components/schemas/Gitlab" + } + ] + }, + "repoLocator": { + "oneOf": [ + { + "$ref": "#/components/schemas/AzureDevops" + }, + { + "$ref": "#/components/schemas/Bitbucket" + }, + { + "$ref": "#/components/schemas/Github" + }, + { + "$ref": "#/components/schemas/Gitlab" + } + ] + }, + "requireNewService": { + "type": "boolean", + "description": "Whether running the template must create a new entity" + }, + "requirePullRequest": { + "type": "boolean", + "description": "Whether the template publishes via a pull request to an existing repository" + }, + "showReadme": { + "type": "boolean", + "description": "Whether the template repository\u0027s README is shown before a run" + }, + "strictAliasUsage": { + "type": "boolean", + "description": "Whether runs are restricted to the git configuration alias the template names" + }, + "tag": { + "type": "string", + "description": "Stable, human-readable identifier, unique within the workspace" + }, + "type": { + "type": "string", + "description": "The templating engine of the template", + "enum": [ + "COOKIECUTTER" + ] + }, + "updatedAt": { + "type": "string", + "description": "ISO-8601 timestamp at which the template was last updated" + } + } + }, "ScoreDetails": { "required": [ "ladderLevels", @@ -27979,11 +45030,6 @@ } }, "Scorecard": { - "required": [ - "draft", - "name", - "tag" - ], "type": "object", "description": "Scorecard associated with user\u0027s entities", "allOf": [ @@ -27991,6 +45037,11 @@ "$ref": "#/components/schemas/MyWorkspaceItem" }, { + "required": [ + "draft", + "name", + "tag" + ], "type": "object", "properties": { "description": { @@ -28026,6 +45077,7 @@ }, "ScorecardResponse": { "required": [ + "dateCreated", "exemptions", "isDraft", "lastUpdated", @@ -28036,6 +45088,11 @@ ], "type": "object", "properties": { + "dateCreated": { + "type": "string", + "description": "Time the Scorecard was created", + "format": "date-time" + }, "description": { "type": "string", "description": "Human-readable description of the Scorecard" @@ -28228,6 +45285,105 @@ }, "description": "Request for scorecards associated with the user\u0027s entities" }, + "SearchPagination": { + "required": [ + "hasMore", + "page", + "pageSize", + "total", + "totalPages" + ], + "type": "object", + "properties": { + "hasMore": { + "type": "boolean" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "total": { + "type": "integer", + "format": "int64" + }, + "totalPages": { + "type": "integer", + "format": "int32" + } + } + }, + "SearchResultEntity": { + "required": [ + "cid", + "groups", + "name", + "ownerEmails", + "owningTeamTags", + "status", + "tag", + "type" + ], + "type": "object", + "properties": { + "cid": { + "type": "string", + "description": "Stable 18-char identifier (hashid)", + "example": "en2da8159dbeefb974" + }, + "description": { + "type": "string" + }, + "groups": { + "type": "array", + "description": "Free-form tags used to organize the catalog — inclusion or exclusion criteria in Scorecards, catalogs, and CQL reports. Corresponds to the x-cortex-groups field in the Catalog Descriptor.", + "items": { + "type": "string", + "description": "Free-form tags used to organize the catalog — inclusion or exclusion criteria in Scorecards, catalogs, and CQL reports. Corresponds to the x-cortex-groups field in the Catalog Descriptor." + } + }, + "name": { + "type": "string" + }, + "ownerEmails": { + "type": "array", + "description": "Emails of individual owners", + "items": { + "type": "string", + "description": "Emails of individual owners" + } + }, + "owningTeamTags": { + "type": "array", + "description": "Tags of the teams that own this entity", + "items": { + "type": "string", + "description": "Tags of the teams that own this entity" + } + }, + "status": { + "type": "string", + "enum": [ + "ACTIVE", + "ARCHIVED" + ] + }, + "tag": { + "type": "string", + "description": "Human slug / x-cortex-tag", + "example": "payments-api" + }, + "type": { + "type": "string", + "description": "Entity type", + "example": "service" + } + }, + "description": "A single search result, lean by design." + }, "SecretResponse": { "required": [ "id", @@ -28252,6 +45408,120 @@ } } }, + "SemgrepConfiguration": { + "required": [ + "alias", + "isDefault", + "lastFour", + "organizationId", + "organizationSlug" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lastFour": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "SemgrepConfigurationRequest": { + "required": [ + "alias", + "apiKey", + "isDefault", + "organizationId", + "organizationSlug" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "organizationId": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "SemgrepUpdateConfigurationRequest": { + "required": [ + "alias", + "isDefault" + ], + "type": "object", + "properties": { + "alias": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "organizationId": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "SentryConfiguration": { + "required": [ + "lastFour", + "organizationSlug" + ], + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "lastFour": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, + "SentryConfigurationRequest": { + "required": [ + "authToken", + "organizationSlug" + ], + "type": "object", + "properties": { + "authToken": { + "type": "string" + }, + "host": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + } + } + }, "ServiceDetails": { "required": [ "groups", @@ -28290,6 +45560,44 @@ } } }, + "ServiceNowConfigurationRequest": { + "required": [ + "instanceName", + "password", + "username" + ], + "type": "object", + "properties": { + "instanceName": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "ServiceNowConfigurationResponse": { + "required": [ + "instanceName", + "lastFour", + "username" + ], + "type": "object", + "properties": { + "instanceName": { + "type": "string" + }, + "lastFour": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, "ServiceOwners": { "required": [ "groups", @@ -28340,6 +45648,36 @@ } } }, + "SignalFxConfigurationRequest": { + "required": [ + "accessToken", + "realm" + ], + "type": "object", + "properties": { + "accessToken": { + "type": "string" + }, + "realm": { + "type": "string" + } + } + }, + "SignalFxConfigurationResponse": { + "required": [ + "lastFour", + "realm" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "realm": { + "type": "string" + } + } + }, "SingleAwsConfigurationRequest": { "required": [ "accountId", @@ -28451,6 +45789,48 @@ }, "description": "Slack channel information" }, + "SnykConfigurationRequest": { + "required": [ + "authToken", + "region" + ], + "type": "object", + "properties": { + "authToken": { + "type": "string" + }, + "region": { + "type": "string", + "enum": [ + "USA", + "US2", + "EU", + "AUS" + ] + } + } + }, + "SnykConfigurationResponse": { + "required": [ + "lastFour", + "region" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "region": { + "type": "string", + "enum": [ + "USA", + "US2", + "EU", + "AUS" + ] + } + } + }, "SonarqubeConfiguration": { "required": [ "alias", @@ -28507,14 +45887,21 @@ "alias": { "type": "string" }, + "host": { + "type": "string" + }, "isDefault": { "type": "boolean" + }, + "token": { + "type": "string" } } }, "Source": { "required": [ "attributes", + "category", "description", "dimensions", "filterOptions", @@ -28527,9 +45914,13 @@ "type": "array", "description": "Queryable fields available directly on this source", "items": { - "$ref": "#/components/schemas/Attribute1" + "$ref": "#/components/schemas/Attribute" } }, + "category": { + "type": "string", + "description": "Category this source belongs to (e.g. \u0027Version Control\u0027, \u0027CI-CD\u0027) -- the axis the product groups metrics by in its selector" + }, "description": { "type": "string", "description": "Human-readable description of what data this source provides" @@ -28562,10 +45953,45 @@ }, "description": "Map of source names to source metadata for query construction" }, - "TEAM_FILTER": { + "SumoLogicConfigurationRequest": { "required": [ - "type" + "accessId", + "accessKey", + "deployment" + ], + "type": "object", + "properties": { + "accessId": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "deployment": { + "type": "string" + } + } + }, + "SumoLogicConfigurationResponse": { + "required": [ + "accessId", + "deployment", + "lastFour" ], + "type": "object", + "properties": { + "accessId": { + "type": "string" + }, + "deployment": { + "type": "string" + }, + "lastFour": { + "type": "string" + } + } + }, + "TEAM_FILTER": { "type": "object", "allOf": [ { @@ -28582,11 +46008,6 @@ ] }, "Team": { - "required": [ - "cid", - "name", - "tag" - ], "type": "object", "description": "Team that the user belongs to", "allOf": [ @@ -28594,6 +46015,11 @@ "$ref": "#/components/schemas/MyWorkspaceItem" }, { + "required": [ + "cid", + "name", + "tag" + ], "type": "object", "properties": { "cid": { @@ -28718,6 +46144,70 @@ } } }, + "TeamFields": { + "required": [ + "teamId" + ], + "type": "object", + "properties": { + "parentTeamIdField": { + "$ref": "#/components/schemas/Base" + }, + "teamId": { + "$ref": "#/components/schemas/Base" + }, + "teamName": { + "$ref": "#/components/schemas/Base" + } + } + }, + "TeamListFields": { + "required": [ + "teamId", + "teamListKey" + ], + "type": "object", + "properties": { + "hierarchy": { + "$ref": "#/components/schemas/HierarchyColumns" + }, + "teamEmployeeManages": { + "$ref": "#/components/schemas/Base" + }, + "teamId": { + "$ref": "#/components/schemas/Base" + }, + "teamListKey": { + "$ref": "#/components/schemas/ListKey" + }, + "teamName": { + "$ref": "#/components/schemas/Base" + } + } + }, + "TeamListWorkdayReportMapping": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkdayReportMappingV2" + }, + { + "required": [ + "fallbackFields", + "teamListFields" + ], + "type": "object", + "properties": { + "fallbackFields": { + "$ref": "#/components/schemas/FallbackFields" + }, + "teamListFields": { + "$ref": "#/components/schemas/TeamListFields" + } + } + } + ] + }, "TeamMember": { "required": [ "roles", @@ -28865,23 +46355,15 @@ }, "TeamResponse.CORTEX": { "title": "CORTEX", - "required": [ - "catalogEntityTag", - "cortexTeam", - "id", - "isArchived", - "links", - "metadata", - "slackChannels", - "teamTag", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/TeamResponse" }, { + "required": [ + "cortexTeam" + ], "type": "object", "properties": { "cortexTeam": { @@ -28893,23 +46375,15 @@ }, "TeamResponse.IDP": { "title": "IDP", - "required": [ - "catalogEntityTag", - "id", - "idpGroup", - "isArchived", - "links", - "metadata", - "slackChannels", - "teamTag", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/TeamResponse" }, { + "required": [ + "idpGroup" + ], "type": "object", "properties": { "idpGroup": { @@ -28919,6 +46393,66 @@ } ] }, + "TeamRoleResponse": { + "required": [ + "name", + "notificationsEnabled", + "tag" + ], + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Optional description of the team member role" + }, + "name": { + "type": "string", + "description": "Display name of the team member role" + }, + "notificationsEnabled": { + "type": "boolean", + "description": "Whether notifications are enabled by default for members assigned this role" + }, + "tag": { + "type": "string", + "description": "Unique tag identifying the team member role" + } + }, + "description": "Team member roles for the current page" + }, + "TeamRolesResponse": { + "required": [ + "page", + "roles", + "total", + "totalPages" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "roles": { + "type": "array", + "description": "Team member roles for the current page", + "items": { + "$ref": "#/components/schemas/TeamRoleResponse" + } + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + } + } + }, "Teams": { "required": [ "includeMembers", @@ -28997,18 +46531,46 @@ } }, "TimeWindow": { - "required": [ - "alias", - "name", - "ordinal", - "windowSize" - ], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/PointInTimeComparison" + }, + { + "required": [ + "decimalPlaces", + "endTime", + "startTime" + ], + "type": "object", + "properties": { + "decimalPlaces": { + "type": "integer", + "format": "int32" + }, + "endTime": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-time" + } + } + } + ] + }, + "TimeWindowColumn": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Column" }, { + "required": [ + "ordinal", + "windowSize" + ], "type": "object", "properties": { "ordinal": { @@ -29121,6 +46683,139 @@ } } }, + "TraceEventsRequest": { + "required": [ + "attributes", + "endDate", + "filters", + "limit", + "orderBy", + "source", + "startDate" + ], + "type": "object", + "properties": { + "attributes": { + "type": "array", + "description": "List of attribute names to include in results. Empty returns all attributes.", + "items": { + "type": "string", + "description": "List of attribute names to include in results. Empty returns all attributes." + } + }, + "daysOfWeek": { + "uniqueItems": true, + "type": "array", + "description": "Optional day-of-week restriction (ISO: Monday\u003d1..Sunday\u003d7). When set, only events whose time attribute falls on one of these days are returned (e.g. [1,2,3,4,5] excludes weekends).", + "items": { + "type": "integer", + "description": "Optional day-of-week restriction (ISO: Monday\u003d1..Sunday\u003d7). When set, only events whose time attribute falls on one of these days are returned (e.g. [1,2,3,4,5] excludes weekends).", + "format": "int32" + } + }, + "endDate": { + "type": "string", + "description": "End of the time range to query", + "format": "date-time" + }, + "filters": { + "type": "array", + "description": "Filters to apply to the query", + "items": { + "$ref": "#/components/schemas/AttributeFilterObject" + } + }, + "limit": { + "type": "integer", + "description": "Maximum number of results to return (max 500)", + "format": "int32" + }, + "nextPage": { + "type": "string", + "description": "Pagination cursor from a previous response" + }, + "orderBy": { + "type": "array", + "description": "Ordering specification for results", + "items": { + "$ref": "#/components/schemas/OrderBy" + } + }, + "source": { + "type": "string", + "description": "Data source to query (e.g., \u0027pull_requests\u0027, \u0027deployments\u0027)" + }, + "startDate": { + "type": "string", + "description": "Start of the time range to query", + "format": "date-time" + }, + "timeAttribute": { + "type": "string", + "description": "Override the default time attribute for time-based filtering" + } + } + }, + "TraceEventsResponse": { + "required": [ + "metadata", + "rows" + ], + "type": "object", + "properties": { + "metadata": { + "$ref": "#/components/schemas/QueryMetadata" + }, + "rows": { + "type": "array", + "description": "Result rows, one array per event. Cells are positional: the value at index i corresponds to `metadata.columns[i]`, and its JSON type follows that column\u0027s type (string, number, boolean, or null). Rows are not keyed by column name.", + "example": [ + [ + "cortexapps/brain-backend", + 42, + "2026-01-15T09:30:00" + ], + [ + "cortexapps/brain-app", + 7, + null + ] + ], + "items": { + "type": "array", + "description": "Result rows, one array per event. Cells are positional: the value at index i corresponds to `metadata.columns[i]`, and its JSON type follows that column\u0027s type (string, number, boolean, or null). Rows are not keyed by column name.", + "example": [ + [ + "cortexapps/brain-backend", + 42, + "2026-01-15T09:30:00" + ], + [ + "cortexapps/brain-app", + 7, + null + ] + ], + "items": { + "type": "object", + "description": "Result rows, one array per event. Cells are positional: the value at index i corresponds to `metadata.columns[i]`, and its JSON type follows that column\u0027s type (string, number, boolean, or null). Rows are not keyed by column name.", + "example": [ + [ + "cortexapps/brain-backend", + 42, + "2026-01-15T09:30:00" + ], + [ + "cortexapps/brain-app", + 7, + null + ] + ] + } + } + } + } + }, "TypeFilter": { "type": "object", "properties": { @@ -29387,13 +47082,6 @@ }, "UpdateTeamRequest.CORTEX": { "title": "CORTEX", - "required": [ - "cortexTeam", - "links", - "metadata", - "slackChannels", - "type" - ], "type": "object", "description": "Use this request shape when updating a team entry whose memberships are manually maintained via API or the UI.", "allOf": [ @@ -29401,6 +47089,10 @@ "$ref": "#/components/schemas/UpdateTeamRequest" }, { + "required": [ + "cortexTeam", + "type" + ], "type": "object", "properties": { "cortexTeam": { @@ -29415,12 +47107,6 @@ }, "UpdateTeamRequest.IDP": { "title": "IDP", - "required": [ - "links", - "metadata", - "slackChannels", - "type" - ], "type": "object", "description": "Use this request shape when updating a team entry whose memberships are synced with an Idp group, such as from Okta, Google Groups, Github Teams, Azure AD, etc.", "allOf": [ @@ -29428,6 +47114,9 @@ "$ref": "#/components/schemas/UpdateTeamRequest" }, { + "required": [ + "type" + ], "type": "object", "properties": { "type": { @@ -29437,19 +47126,95 @@ } ] }, - "Url": { + "UpsertVerificationPeriodRequest": { "required": [ - "alias", - "attributeName", + "endDate", "name", - "ordinal" + "requiredCustomRoleTags", + "requiredRoles", + "requiredTeamRoleTags", + "scope", + "startDate" ], + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "What owners are being asked to confirm" + }, + "endDate": { + "type": "string", + "description": "The day the period closes, inclusive", + "format": "date-time" + }, + "name": { + "type": "string", + "description": "Display name", + "example": "Q3 Ownership Review" + }, + "reasonRequired": { + "type": "boolean", + "description": "Whether a reason is required to mark an entity incorrect. Marking an entity correct never requires one. Defaults to false.", + "example": false, + "default": false + }, + "requiredCustomRoleTags": { + "type": "array", + "description": "Tags of custom Cortex roles a user must hold to verify", + "items": { + "type": "string", + "description": "Tags of custom Cortex roles a user must hold to verify" + } + }, + "requiredRoles": { + "type": "array", + "description": "Cortex roles a user must hold to verify. Empty means any owner of the entity may verify.", + "example": [ + "OWNER" + ], + "items": { + "type": "string", + "description": "Cortex roles a user must hold to verify. Empty means any owner of the entity may verify.", + "example": "[\"OWNER\"]", + "enum": [ + "VIEWER", + "USER", + "MANAGER", + "API", + "OWNER" + ] + } + }, + "requiredTeamRoleTags": { + "type": "array", + "description": "Tags of team roles a user must hold on a team that owns the entity in order to verify", + "items": { + "type": "string", + "description": "Tags of team roles a user must hold on a team that owns the entity in order to verify" + } + }, + "scope": { + "$ref": "#/components/schemas/VerificationScope" + }, + "startDate": { + "type": "string", + "description": "The day the period opens, inclusive", + "format": "date-time" + } + }, + "description": "A verification period to create, or the full replacement state for one" + }, + "UrlColumn": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Column" }, { + "required": [ + "attributeName", + "ordinal" + ], "type": "object", "properties": { "attributeName": { @@ -29483,6 +47248,37 @@ } } }, + "User1": { + "required": [ + "email", + "joinedAt", + "name" + ], + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address of the user" + }, + "joinedAt": { + "type": "string", + "description": "When the user was first added to Cortex (join date), as a UTC ISO-8601 instant", + "format": "date-time", + "example": "2024-01-15T08:00:00Z" + }, + "lastActiveAt": { + "type": "string", + "description": "Last time the user logged in, as a UTC ISO-8601 instant; null if the user has never logged in", + "format": "date-time", + "example": "2024-06-10T14:45:00Z" + }, + "name": { + "type": "string", + "description": "Display name of the user" + } + }, + "description": "Users for the current page" + }, "UserLabel": { "required": [ "id", @@ -29546,37 +47342,129 @@ } } }, - "UserLabelValue": { + "UserLabelValue": { + "required": [ + "id", + "name", + "value" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "description": "Map of user email to the list of assigned user label values" + }, + "UserRoleAssignment": { + "required": [ + "email", + "name", + "roles" + ], + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address of the user" + }, + "name": { + "type": "string", + "description": "Display name of the user" + }, + "roles": { + "type": "array", + "description": "Roles assigned to the user", + "items": { + "$ref": "#/components/schemas/AssignedRole" + } + } + }, + "description": "User role assignments for the current page" + }, + "UserRoleAssignmentsResponse": { + "required": [ + "page", + "total", + "totalPages", + "users" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + }, + "users": { + "type": "array", + "description": "User role assignments for the current page", + "items": { + "$ref": "#/components/schemas/UserRoleAssignment" + } + } + } + }, + "UserSchedule": { "required": [ - "id", - "name", - "value" + "user" ], "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "value": { - "type": "string" + "user": { + "$ref": "#/components/schemas/User" } }, - "description": "Map of user email to the list of assigned user label values" + "description": "User details" }, - "UserSchedule": { + "UsersResponse": { "required": [ - "user" + "page", + "total", + "totalPages", + "users" ], "type": "object", "properties": { - "user": { - "$ref": "#/components/schemas/User" + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + }, + "users": { + "type": "array", + "description": "Users for the current page", + "items": { + "$ref": "#/components/schemas/User1" + } } - }, - "description": "User details" + } }, "ValidIpAllowlistEntry": { "required": [ @@ -29600,18 +47488,18 @@ } }, "Value": { - "required": [ - "editable", - "inputKey", - "outputVariable", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/InputOverride" }, { + "required": [ + "editable", + "inputKey", + "outputVariable", + "type" + ], "type": "object", "properties": { "editable": { @@ -29624,7 +47512,7 @@ }, "outputVariable": { "type": "string", - "description": "The path to the override value in the workflow context" + "description": "The path to the override value, as a dot path into the run data that starts with `context`, `actions` or `variables`, e.g. `variables.team-tags`." }, "type": { "type": "string" @@ -29642,7 +47530,7 @@ "properties": { "slug": { "type": "string", - "description": "The type of the variable" + "description": "The slug of the workflow variable to set" }, "source": { "oneOf": [ @@ -29664,7 +47552,12 @@ "type": "object", "properties": { "type": { - "type": "string" + "type": "string", + "description": "How the value is found: `REFERENCE` reads a path, `JAVASCRIPT` runs a script", + "enum": [ + "REFERENCE", + "JAVASCRIPT" + ] } }, "description": "How to set the variable", @@ -29672,6 +47565,396 @@ "propertyName": "type" } }, + "VeracodeConfigurationRequest": { + "required": [ + "apiKey", + "keyId", + "region" + ], + "type": "object", + "properties": { + "apiKey": { + "type": "string" + }, + "keyId": { + "type": "string" + }, + "region": { + "type": "string", + "enum": [ + "US", + "EU", + "US_FED" + ] + } + } + }, + "VeracodeConfigurationResponse": { + "required": [ + "keyId", + "lastFour", + "region" + ], + "type": "object", + "properties": { + "keyId": { + "type": "string" + }, + "lastFour": { + "type": "string" + }, + "region": { + "type": "string", + "enum": [ + "US", + "EU", + "US_FED" + ] + } + } + }, + "VerificationCounts": { + "required": [ + "pending", + "verifiedCorrect", + "verifiedIncorrect" + ], + "type": "object", + "properties": { + "pending": { + "type": "integer", + "description": "Entities not yet verified", + "format": "int64", + "example": 12 + }, + "verifiedCorrect": { + "type": "integer", + "description": "Entities confirmed correct", + "format": "int64", + "example": 40 + }, + "verifiedIncorrect": { + "type": "integer", + "description": "Entities flagged incorrect", + "format": "int64", + "example": 3 + } + }, + "description": "Entity counts for one verification period" + }, + "VerificationEntitySummary": { + "required": [ + "cid", + "name", + "tag", + "type" + ], + "type": "object", + "properties": { + "cid": { + "type": "string", + "description": "Stable identifier", + "example": "en0a1b2c3d4e5f6789" + }, + "name": { + "type": "string", + "description": "Display name", + "example": "Payments API" + }, + "tag": { + "type": "string", + "description": "The entity\u0027s tag", + "example": "payments-api" + }, + "type": { + "type": "string", + "description": "The entity\u0027s type", + "example": "service" + } + }, + "description": "Enough of an entity to identify it and look it up" + }, + "VerificationPeriod": { + "required": [ + "cid", + "endDate", + "isActive", + "name", + "startDate" + ], + "type": "object", + "properties": { + "cid": { + "type": "string", + "description": "Stable identifier for the period", + "example": "vp0a1b2c3d4e5f6789" + }, + "description": { + "type": "string", + "description": "What owners are being asked to confirm" + }, + "endDate": { + "type": "string", + "description": "When the period closes", + "format": "date-time" + }, + "isActive": { + "type": "boolean", + "description": "Whether the period is open today, and so still accepting verifications", + "example": true + }, + "name": { + "type": "string", + "description": "Display name", + "example": "Q3 Ownership Review" + }, + "startDate": { + "type": "string", + "description": "When the period opens", + "format": "date-time" + } + }, + "description": "A time-boxed entity verification campaign" + }, + "VerificationPeriodSummary": { + "required": [ + "cid", + "counts", + "endDate", + "isActive", + "name", + "reasonRequired", + "requiredCustomRoleTags", + "requiredRoles", + "requiredTeamRoleTags", + "scope", + "startDate" + ], + "type": "object", + "properties": { + "cid": { + "type": "string", + "description": "Stable identifier, usable wherever a period CID is accepted", + "example": "vp0a1b2c3d4e5f6789" + }, + "counts": { + "$ref": "#/components/schemas/VerificationCounts" + }, + "description": { + "type": "string", + "description": "What owners are being asked to confirm" + }, + "endDate": { + "type": "string", + "description": "When the period closes", + "format": "date-time" + }, + "isActive": { + "type": "boolean", + "description": "Whether the period is open today, and so still accepting verifications", + "example": true + }, + "name": { + "type": "string", + "description": "Display name", + "example": "Q3 Ownership Review" + }, + "reasonRequired": { + "type": "boolean", + "description": "Whether a reason is required when an entity is marked incorrect", + "example": false + }, + "requiredCustomRoleTags": { + "type": "array", + "description": "Tags of custom Cortex roles a user must hold to verify", + "items": { + "type": "string", + "description": "Tags of custom Cortex roles a user must hold to verify" + } + }, + "requiredRoles": { + "type": "array", + "description": "Cortex roles a user must hold to verify", + "example": [ + "OWNER" + ], + "items": { + "type": "string", + "description": "Cortex roles a user must hold to verify", + "example": "[\"OWNER\"]", + "enum": [ + "VIEWER", + "USER", + "MANAGER", + "API", + "OWNER" + ] + } + }, + "requiredTeamRoleTags": { + "type": "array", + "description": "Tags of team roles a user must hold on an owning team to verify", + "items": { + "type": "string", + "description": "Tags of team roles a user must hold on an owning team to verify" + } + }, + "scope": { + "$ref": "#/components/schemas/VerificationScope" + }, + "startDate": { + "type": "string", + "description": "When the period opens", + "format": "date-time" + } + }, + "description": "A verification period and how far along it is" + }, + "VerificationScope": { + "required": [ + "entityGroups", + "excludedEntityGroups", + "types" + ], + "type": "object", + "properties": { + "cqlQuery": { + "type": "string", + "description": "Cover the entities this CQL query returns. Evaluated in the background, so a period created with one reports zero entities until that finishes.", + "example": "tag !\u003d null" + }, + "entityGroups": { + "uniqueItems": true, + "type": "array", + "description": "Cover only entities in these entity groups. Empty means every group.", + "items": { + "type": "string", + "description": "Cover only entities in these entity groups. Empty means every group." + } + }, + "excludedEntityGroups": { + "uniqueItems": true, + "type": "array", + "description": "Exclude entities in these entity groups", + "items": { + "type": "string", + "description": "Exclude entities in these entity groups" + } + }, + "types": { + "uniqueItems": true, + "type": "array", + "description": "Cover only entities of these types. Empty means every type.", + "example": [ + "service" + ], + "items": { + "type": "string", + "description": "Cover only entities of these types. Empty means every type.", + "example": "[\"service\"]" + } + } + }, + "description": "Which entities a verification period covers. An empty scope covers every entity. Combined conditions all have to hold." + }, + "VerifyEntityEntry": { + "required": [ + "entity", + "periodCid", + "status" + ], + "type": "object", + "properties": { + "entity": { + "type": "string", + "description": "The entity\u0027s tag or CID", + "example": "payments-api" + }, + "periodCid": { + "type": "string", + "description": "The CID of the verification period", + "example": "vp0a1b2c3d4e5f6789" + }, + "reason": { + "type": "string", + "description": "Why the entity is incorrect. Required when the period sets reasonRequired and the status is VERIFIED_INCORRECT.", + "example": "Ownership moved to the payments team" + }, + "status": { + "type": "string", + "description": "Whether the entity\u0027s data is correct. PENDING is not accepted.", + "example": "VERIFIED_CORRECT", + "enum": [ + "PENDING", + "VERIFIED_CORRECT", + "VERIFIED_INCORRECT" + ] + } + }, + "description": "One entity\u0027s answer for one verification period" + }, + "VerifyEntityRequest": { + "required": [ + "status" + ], + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "Why the entity is incorrect. Required when the period sets reasonRequired and the status is VERIFIED_INCORRECT.", + "example": "Ownership moved to the payments team" + }, + "status": { + "type": "string", + "description": "Whether the entity\u0027s data is correct. PENDING is not accepted.", + "example": "VERIFIED_CORRECT", + "enum": [ + "PENDING", + "VERIFIED_CORRECT", + "VERIFIED_INCORRECT" + ] + } + }, + "description": "An answer for one entity in one period" + }, + "VictoropsConfiguration": { + "required": [ + "lastFourApiId", + "lastFourApiKey", + "organization" + ], + "type": "object", + "properties": { + "lastFourApiId": { + "type": "string" + }, + "lastFourApiKey": { + "type": "string" + }, + "organization": { + "type": "string" + } + } + }, + "VictoropsConfigurationRequest": { + "required": [ + "apiId", + "apiKey", + "organization" + ], + "type": "object", + "properties": { + "apiId": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "organization": { + "type": "string" + } + } + }, "ViolationDTO": { "required": [ "paths" @@ -29715,14 +47998,61 @@ } } }, - "WorkItem": { + "WizConfigurationRequest": { "required": [ - "id", - "source", - "status", - "title", - "url" + "clientId", + "clientSecret", + "dataCenter", + "identityProvider" + ], + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "dataCenter": { + "type": "string" + }, + "identityProvider": { + "type": "string", + "enum": [ + "AMAZON_COGNITO", + "AUTH0" + ] + } + } + }, + "WizConfigurationResponse": { + "required": [ + "clientId", + "dataCenter", + "identityProvider", + "lastFour" ], + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "dataCenter": { + "type": "string" + }, + "identityProvider": { + "type": "string", + "enum": [ + "AMAZON_COGNITO", + "AUTH0" + ] + }, + "lastFour": { + "type": "string" + } + } + }, + "WorkItem": { "type": "object", "description": "Work item (Jira, Linear, Azure DevOps issue) assigned to the user", "allOf": [ @@ -29730,6 +48060,13 @@ "$ref": "#/components/schemas/MyWorkspaceItem" }, { + "required": [ + "id", + "source", + "status", + "title", + "url" + ], "type": "object", "properties": { "alias": { @@ -29840,6 +48177,111 @@ }, "description": "Request for work items (Jira, Linear, Azure DevOps issues) assigned to the user" }, + "WorkdayConfigurationRequest": { + "required": [ + "ownershipReportUrl", + "password", + "username" + ], + "type": "object", + "properties": { + "ownershipReportUrl": { + "type": "string" + }, + "password": { + "type": "string" + }, + "reportMappingV2": { + "oneOf": [ + { + "$ref": "#/components/schemas/BaseWorkdayReportMapping" + }, + { + "$ref": "#/components/schemas/MultipleTeamFieldsWorkdayReportMapping" + }, + { + "$ref": "#/components/schemas/TeamListWorkdayReportMapping" + } + ] + }, + "username": { + "type": "string" + } + } + }, + "WorkdayConfigurationResponse": { + "required": [ + "lastFour", + "ownershipReportUrl", + "username" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "ownershipReportUrl": { + "type": "string" + }, + "reportMappingV2": { + "oneOf": [ + { + "$ref": "#/components/schemas/BaseWorkdayReportMapping" + }, + { + "$ref": "#/components/schemas/MultipleTeamFieldsWorkdayReportMapping" + }, + { + "$ref": "#/components/schemas/TeamListWorkdayReportMapping" + } + ] + }, + "username": { + "type": "string" + } + } + }, + "WorkdayReportMappingV2": { + "required": [ + "email", + "employeeId", + "rootTeams", + "type" + ], + "type": "object", + "properties": { + "email": { + "$ref": "#/components/schemas/Base" + }, + "employeeId": { + "$ref": "#/components/schemas/Base" + }, + "employeeRole": { + "$ref": "#/components/schemas/Base" + }, + "firstName": { + "$ref": "#/components/schemas/Base" + }, + "lastName": { + "$ref": "#/components/schemas/Base" + }, + "managerEmail": { + "$ref": "#/components/schemas/Base" + }, + "rootTeams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RootTeam" + } + }, + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type" + } + }, "WorkflowAction": { "required": [ "isRootAction", @@ -29860,10 +48302,10 @@ }, "outgoingActions": { "type": "array", - "description": "The actions that will be executed after this action", + "description": "The slugs of the actions that run after this action. For a CONDITIONAL_BRANCH action, list the `outgoingAction` of every branch and of the fallback branch.", "items": { "type": "string", - "description": "The actions that will be executed after this action" + "description": "The slugs of the actions that run after this action. For a CONDITIONAL_BRANCH action, list the `outgoingAction` of every branch and of the fallback branch." } }, "schema": { @@ -29871,10 +48313,10 @@ }, "slug": { "type": "string", - "description": "The slug of the action" + "description": "The slug of the action. Use lowercase letters, digits and hyphens, 2 to 255 characters, not starting or ending with a hyphen." } }, - "description": "List of actions in the workflow" + "description": "List of actions in the workflow. Actions read run data with three top-level keys: `context` (`workflowRunId`, `initiatedBy`, and `entity` for a run on an entity), `actions` (earlier actions by slug) and `variables` (workflow variables by slug). Every action writes its result to `actions.\u003cslug\u003e.outputs`. The keys depend on the action type, e.g. `result` for JQ and JavaScript, or `status`, `headers` and `body` for HTTP. JQ reads `.variables.x`, CEL, JavaScript and dot paths read `variables.x`, and action text fields take `{{variables.x}}` templates. Quote a slug with a hyphen: `actions[\"my-slug\"]`, with a leading dot in JQ." }, "WorkflowActionSchema": { "required": [ @@ -29884,7 +48326,26 @@ "properties": { "type": { "type": "string", - "description": "The type of the action" + "description": "The type of the action. It sets which other fields the action takes.", + "enum": [ + "HTTP_REQUEST", + "ADVANCED_HTTP_REQUEST", + "HTTP_REQUEST_ASYNC", + "SCAFFOLDER", + "USER_INPUT", + "JQ", + "SLACK", + "MANUAL_APPROVAL", + "CONDITIONAL_BRANCH", + "GITHUB_CREATE_OR_UPDATE_FILE", + "MS_TEAMS_SEND_MESSAGE", + "JAVASCRIPT", + "SET_VARIABLES", + "AWS", + "PAGERDUTY_CREATE_INCIDENT", + "JIRA_CREATE_ISSUE", + "RUN_WORKFLOW" + ] } }, "description": "The definition of the action", @@ -29939,35 +48400,41 @@ }, { "$ref": "#/components/schemas/WorkflowActionSchema.JIRA_CREATE_ISSUE" + }, + { + "$ref": "#/components/schemas/WorkflowActionSchema.RUN_WORKFLOW" } ] }, "WorkflowActionSchema.ADVANCED_HTTP_REQUEST": { "title": "ADVANCED_HTTP_REQUEST", - "required": [ - "actionIdentifier", - "inputs", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "actionIdentifier", + "inputs", + "type" + ], "type": "object", "properties": { "actionIdentifier": { - "type": "string" + "type": "string", + "description": "The ID of the Cortex library action to run, e.g. `googleCloud.getProject`. Copy it from an existing workflow with getWorkflow." }, "inputs": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/JsonNode" - } + }, + "description": "The values for the inputs of the library action, by input key" }, "integrationAlias": { - "type": "string" + "type": "string", + "description": "The alias of the integration configuration to use. Required when the integration has more than one configuration." }, "type": { "type": "string" @@ -29978,35 +48445,39 @@ }, "WorkflowActionSchema.AWS": { "title": "AWS", - "required": [ - "accountId", - "actionIdentifier", - "inputs", - "region", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "accountId", + "actionIdentifier", + "inputs", + "region", + "type" + ], "type": "object", "properties": { "accountId": { - "type": "string" + "type": "string", + "description": "The AWS account ID to run the action in. Supports templates." }, "actionIdentifier": { - "type": "string" + "type": "string", + "description": "The ID of the AWS action to run, e.g. `aws.ec2.describeInstances`. Copy it from an existing workflow with getWorkflow." }, "inputs": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/JsonNode" - } + }, + "description": "The values for the inputs of the AWS action, by input key" }, "region": { - "type": "string" + "type": "string", + "description": "The AWS region, e.g. `us-east-1`. Supports templates." }, "type": { "type": "string" @@ -30017,21 +48488,21 @@ }, "WorkflowActionSchema.CONDITIONAL_BRANCH": { "title": "CONDITIONAL_BRANCH", - "required": [ - "branches", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "branches", + "type" + ], "type": "object", "properties": { "branches": { "type": "array", - "description": "The list of conditional branches that will be evaluated in order", + "description": "The list of conditional branches that will be evaluated in order. Each result is at `actions.\u003cslug\u003e.outputs.conditions.\u003cbranchSlug\u003e.result`.", "items": { "$ref": "#/components/schemas/Conditional" } @@ -30041,7 +48512,7 @@ }, "joiningAction": { "type": "string", - "description": "The joining action that will run after all branches" + "description": "The slug of the action where the branch paths join again. Leave it out if they do not join." }, "type": { "type": "string" @@ -30052,20 +48523,20 @@ }, "WorkflowActionSchema.GITHUB_CREATE_OR_UPDATE_FILE": { "title": "GITHUB_CREATE_OR_UPDATE_FILE", - "required": [ - "alias", - "commitMessage", - "content", - "path", - "repositoryName", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "alias", + "commitMessage", + "content", + "path", + "repositoryName", + "type" + ], "type": "object", "properties": { "alias": { @@ -30107,18 +48578,18 @@ }, "WorkflowActionSchema.HTTP_REQUEST": { "title": "HTTP_REQUEST", - "required": [ - "headers", - "httpMethod", - "type", - "url" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "headers", + "httpMethod", + "type", + "url" + ], "type": "object", "properties": { "headers": { @@ -30140,10 +48611,62 @@ "PATCH" ] }, + "integration": { + "type": "string", + "description": "The integration to use for authentication", + "enum": [ + "AzureDevops", + "Bitbucket", + "GitHub", + "LaunchDarkly", + "ServiceNow", + "GitLab", + "Pagerduty", + "Slack", + "Cortex", + "Jenkins", + "Google", + "Harness", + "Jira", + "Sonarqube", + "CircleCi", + "Coralogix", + "Semgrep", + "Apiiro", + "Prometheus", + "Rootly", + "NewRelic", + "Opsgenie", + "Sentry", + "Snyk", + "Buildkite", + "Firehydrant", + "Victorops", + "Rollbar", + "Bugsnag", + "Codecov", + "SignalFX", + "Instana", + "Lightstep", + "SumoLogic", + "Mend", + "BambooHR", + "XMatters", + "Clickup" + ] + }, + "integrationAlias": { + "type": "string", + "description": "The alias of the integration configuration to use" + }, "payload": { "type": "string", "description": "The payload for the request" }, + "targetHost": { + "type": "string", + "description": "The *.googleapis.com host to target when using the Google Cloud integration. Setting this with any other integration is rejected as invalid. Defaults to cloudresourcemanager.googleapis.com when unset." + }, "type": { "type": "string" }, @@ -30157,18 +48680,18 @@ }, "WorkflowActionSchema.HTTP_REQUEST_ASYNC": { "title": "HTTP_REQUEST_ASYNC", - "required": [ - "headers", - "httpMethod", - "type", - "url" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "headers", + "httpMethod", + "type", + "url" + ], "type": "object", "properties": { "headers": { @@ -30190,10 +48713,62 @@ "PATCH" ] }, + "integration": { + "type": "string", + "description": "The integration to use for authentication", + "enum": [ + "AzureDevops", + "Bitbucket", + "GitHub", + "LaunchDarkly", + "ServiceNow", + "GitLab", + "Pagerduty", + "Slack", + "Cortex", + "Jenkins", + "Google", + "Harness", + "Jira", + "Sonarqube", + "CircleCi", + "Coralogix", + "Semgrep", + "Apiiro", + "Prometheus", + "Rootly", + "NewRelic", + "Opsgenie", + "Sentry", + "Snyk", + "Buildkite", + "Firehydrant", + "Victorops", + "Rollbar", + "Bugsnag", + "Codecov", + "SignalFX", + "Instana", + "Lightstep", + "SumoLogic", + "Mend", + "BambooHR", + "XMatters", + "Clickup" + ] + }, + "integrationAlias": { + "type": "string", + "description": "The alias of the integration configuration to use" + }, "payload": { "type": "string", "description": "The payload for the request" }, + "targetHost": { + "type": "string", + "description": "The *.googleapis.com host to target when using the Google Cloud integration. Setting this with any other integration is rejected as invalid. Defaults to cloudresourcemanager.googleapis.com when unset." + }, "timeoutInSeconds": { "type": "integer", "description": "The timeout for the request in seconds", @@ -30212,21 +48787,21 @@ }, "WorkflowActionSchema.JAVASCRIPT": { "title": "JAVASCRIPT", - "required": [ - "script", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "script", + "type" + ], "type": "object", "properties": { "script": { "type": "string", - "description": "The JavaScript script for the action" + "description": "The JavaScript script for the action. It runs as the body of `run(actions, context, variables)`, e.g. `return context.initiatedBy.email`." }, "type": { "type": "string" @@ -30234,26 +48809,26 @@ } } ] - }, - "WorkflowActionSchema.JIRA_CREATE_ISSUE": { - "title": "JIRA_CREATE_ISSUE", - "required": [ - "alias", - "components", - "description", - "fields", - "issueSummary", - "issueType", - "labels", - "projectKey", - "type" - ], + }, + "WorkflowActionSchema.JIRA_CREATE_ISSUE": { + "title": "JIRA_CREATE_ISSUE", "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "alias", + "components", + "description", + "fields", + "issueSummary", + "issueType", + "labels", + "projectKey", + "type" + ], "type": "object", "properties": { "alias": { @@ -30321,21 +48896,21 @@ }, "WorkflowActionSchema.JQ": { "title": "JQ", - "required": [ - "expression", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "expression", + "type" + ], "type": "object", "properties": { "expression": { "type": "string", - "description": "The JQ expression for the action" + "description": "The JQ expression for the action. Its input has the keys `context`, `actions` and `variables`, e.g. `.context.initiatedBy.email`." }, "type": { "type": "string" @@ -30346,30 +48921,34 @@ }, "WorkflowActionSchema.MANUAL_APPROVAL": { "title": "MANUAL_APPROVAL", - "required": [ - "approvingTeamIds", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "approvingTeamIds", + "type" + ], "type": "object", "properties": { "approverDescription": { "type": "string", - "description": "A description that will be shown to approvers" + "description": "A description that will be shown to approvers. Supports templates." }, "approvingTeamIds": { "type": "array", - "description": "The IDs of the teams whose members can approve the action", + "description": "The CIDs of the teams whose members can approve the action, not team tags. Can be empty when `approvingTeamIdsOverride` is set.", "items": { "type": "string", - "description": "The IDs of the teams whose members can approve the action" + "description": "The CIDs of the teams whose members can approve the action, not team tags. Can be empty when `approvingTeamIdsOverride` is set." } }, + "approvingTeamIdsOverride": { + "type": "string", + "description": "The path to the value that resolves the approving teams at run time, as a dot path into the run data that starts with `context`, `actions` or `variables`, e.g. `variables.approvers`. The value at the path must be an array of team Cortex IDs or team tags." + }, "type": { "type": "string" } @@ -30379,18 +48958,18 @@ }, "WorkflowActionSchema.MS_TEAMS_SEND_MESSAGE": { "title": "MS_TEAMS_SEND_MESSAGE", - "required": [ - "channelId", - "message", - "teamId", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "channelId", + "message", + "teamId", + "type" + ], "type": "object", "properties": { "channelId": { @@ -30414,20 +48993,20 @@ }, "WorkflowActionSchema.PAGERDUTY_CREATE_INCIDENT": { "title": "PAGERDUTY_CREATE_INCIDENT", - "required": [ - "body", - "fromEmail", - "serviceId", - "title", - "type", - "urgency" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "body", + "fromEmail", + "serviceId", + "title", + "type", + "urgency" + ], "type": "object", "properties": { "body": { @@ -30465,24 +49044,62 @@ } ] }, + "WorkflowActionSchema.RUN_WORKFLOW": { + "title": "RUN_WORKFLOW", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowActionSchema" + }, + { + "required": [ + "type", + "waitForCompletion", + "workflowId" + ], + "type": "object", + "properties": { + "entityId": { + "type": "string", + "description": "The ID of the entity" + }, + "timeoutInSeconds": { + "type": "integer", + "description": "How long to wait for the workflow run to finish, in seconds. When it expires, the run is cancelled. Only used with waitForCompletion.", + "format": "int32" + }, + "type": { + "type": "string" + }, + "waitForCompletion": { + "type": "boolean", + "description": "Whether to wait for the workflow run to finish. When it finishes, its status, run response, and variables become outputs of this block. The block fails if the run does not complete." + }, + "workflowId": { + "type": "string", + "description": "The ID of the workflow to run" + } + } + } + ] + }, "WorkflowActionSchema.SCAFFOLDER": { "title": "SCAFFOLDER", - "required": [ - "inputOverrides", - "scaffolderTemplateId", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "inputOverrides", + "type" + ], "type": "object", "properties": { "createNewRepository": { "type": "boolean", - "description": "Whether the scaffolder should create a new repository. Defaults to `true`" + "description": "Whether the Scaffolder should create a new repository. Defaults to `true`" }, "createService": { "type": "boolean", @@ -30490,14 +49107,18 @@ }, "inputOverrides": { "type": "array", - "description": "The input overrides for the scaffolder", + "description": "The input overrides for the Scaffolder", "items": { "$ref": "#/components/schemas/InputOverride" } }, "scaffolderTemplateId": { "type": "string", - "description": "The ID of the scaffolder template" + "description": "On input, accepts either the tag or the Cortex ID of the Scaffolder template. On output, always the template\u0027s Cortex ID, or `null` if the referenced template was deleted." + }, + "scaffolderTemplateTag": { + "type": "string", + "description": "The tag of the Scaffolder template. Preferred over `scaffolderTemplateId` when both are provided, so workflow definitions stay portable across workspaces." }, "type": { "type": "string" @@ -30508,16 +49129,16 @@ }, "WorkflowActionSchema.SET_VARIABLES": { "title": "SET_VARIABLES", - "required": [ - "type", - "variables" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "type", + "variables" + ], "type": "object", "properties": { "type": { @@ -30536,17 +49157,17 @@ }, "WorkflowActionSchema.SLACK": { "title": "SLACK", - "required": [ - "channel", - "message", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "channel", + "message", + "type" + ], "type": "object", "properties": { "channel": { @@ -30566,17 +49187,17 @@ }, "WorkflowActionSchema.USER_INPUT": { "title": "USER_INPUT", - "required": [ - "inputOverrides", - "inputs", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowActionSchema" }, { + "required": [ + "inputOverrides", + "inputs", + "type" + ], "type": "object", "properties": { "inputOverrides": { @@ -30618,11 +49239,22 @@ "properties": { "actions": { "type": "array", - "description": "List of actions in the workflow", + "description": "List of actions in the workflow. Actions read run data with three top-level keys: `context` (`workflowRunId`, `initiatedBy`, and `entity` for a run on an entity), `actions` (earlier actions by slug) and `variables` (workflow variables by slug). Every action writes its result to `actions.\u003cslug\u003e.outputs`. The keys depend on the action type, e.g. `result` for JQ and JavaScript, or `status`, `headers` and `body` for HTTP. JQ reads `.variables.x`, CEL, JavaScript and dot paths read `variables.x`, and action text fields take `{{variables.x}}` templates. Quote a slug with a hyphen: `actions[\"my-slug\"]`, with a leading dot in JQ.", "items": { "$ref": "#/components/schemas/WorkflowAction" } }, + "createdAt": { + "type": "string", + "description": "The date the workflow was created, in ISO 8601 format" + }, + "createdBy": { + "oneOf": [ + { + "$ref": "#/components/schemas/User" + } + ] + }, "description": { "type": "string", "description": "Description of the workflow" @@ -30646,6 +49278,17 @@ "type": "boolean", "description": "Whether the workflow is runnable via the public API" }, + "lastUpdatedAt": { + "type": "string", + "description": "The date the workflow was last updated, in ISO 8601 format" + }, + "lastUpdatedBy": { + "oneOf": [ + { + "$ref": "#/components/schemas/User" + } + ] + }, "name": { "type": "string", "description": "Name of the workflow" @@ -30667,11 +49310,11 @@ }, "tag": { "type": "string", - "description": "Tag of the workflow" + "description": "Tag of the workflow. Use lowercase letters, digits and hyphens, 2 to 255 characters, not starting or ending with a hyphen." }, "variables": { "type": "array", - "description": "List of variable definitions for the workflow", + "description": "List of variable definitions for the workflow. Set run values with `initialContext`.", "items": { "$ref": "#/components/schemas/WorkflowVariable" } @@ -30708,16 +49351,17 @@ }, "WorkflowFilter.ENTITY": { "title": "ENTITY", - "required": [ - "ownershipScope", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowFilter" }, { + "required": [ + "ownershipScope", + "requiredTeamRoles", + "type" + ], "type": "object", "properties": { "entityFilter": { @@ -30731,6 +49375,21 @@ "OWNER", "EDITOR" ] + }, + "requiredTeamRoles": { + "type": "array", + "description": "Tags of the team roles required to run the workflow. When non-empty, the runner must hold at least one of them on a team that owns the entity, in addition to what `ownershipScope` already requires. Only valid alongside an `ownershipScope` other than `ALL`.", + "items": { + "type": "string", + "description": "Tags of the team roles required to run the workflow. When non-empty, the runner must hold at least one of them on a team that owns the entity, in addition to what `ownershipScope` already requires. Only valid alongside an `ownershipScope` other than `ALL`." + } + }, + "type": { + "type": "string", + "enum": [ + "GLOBAL", + "ENTITY" + ] } } } @@ -30738,13 +49397,25 @@ }, "WorkflowFilter.GLOBAL": { "title": "GLOBAL", - "required": [ - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowFilter" + }, + { + "required": [ + "type" + ], + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "GLOBAL", + "ENTITY" + ] + } + } } ] }, @@ -30815,21 +49486,22 @@ }, "WorkflowInput.CORTEX_ENTITY_FIELD": { "title": "CORTEX_ENTITY_FIELD", - "required": [ - "allowMultiple", - "entityFilter", - "key", - "name", - "required", - "shouldDisplayOptionsAsHierarchy", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "allowMultiple", + "entityFilter", + "key", + "limitEntitiesToRunnerUserScope", + "name", + "required", + "shouldDisplayOptionsAsHierarchy", + "type" + ], "type": "object", "properties": { "allowMultiple": { @@ -30855,6 +49527,10 @@ "type": "string", "description": "The key of the input" }, + "limitEntitiesToRunnerUserScope": { + "type": "boolean", + "description": "Whether to limit entity options to the workflow runner\u0027s entities. Defaults to `false`" + }, "name": { "type": "string", "description": "The name of the input" @@ -30880,20 +49556,20 @@ }, "WorkflowInput.CORTEX_USER_FIELD": { "title": "CORTEX_USER_FIELD", - "required": [ - "allowMultiple", - "filter", - "key", - "name", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "allowMultiple", + "filter", + "key", + "name", + "required", + "type" + ], "type": "object", "properties": { "allowMultiple": { @@ -30939,20 +49615,20 @@ }, "WorkflowInput.DATE_FIELD": { "title": "DATE_FIELD", - "required": [ - "disabled", - "format", - "key", - "name", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "disabled", + "format", + "key", + "name", + "required", + "type" + ], "type": "object", "properties": { "defaultValue": { @@ -31000,18 +49676,18 @@ }, "WorkflowInput.INPUT_FIELD": { "title": "INPUT_FIELD", - "required": [ - "key", - "name", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "key", + "name", + "required", + "type" + ], "type": "object", "properties": { "defaultValue": { @@ -31051,20 +49727,20 @@ }, "WorkflowInput.MULTISELECT_FIELD": { "title": "MULTISELECT_FIELD", - "required": [ - "allowAdditionalOptions", - "key", - "name", - "options", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "allowAdditionalOptions", + "key", + "name", + "options", + "required", + "type" + ], "type": "object", "properties": { "allowAdditionalOptions": { @@ -31124,20 +49800,20 @@ }, "WorkflowInput.NUMBER_FIELD": { "title": "NUMBER_FIELD", - "required": [ - "disabled", - "format", - "key", - "name", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "disabled", + "format", + "key", + "name", + "required", + "type" + ], "type": "object", "properties": { "defaultValue": { @@ -31193,19 +49869,19 @@ }, "WorkflowInput.SECRET_FIELD": { "title": "SECRET_FIELD", - "required": [ - "disabled", - "key", - "name", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "disabled", + "key", + "name", + "required", + "type" + ], "type": "object", "properties": { "description": { @@ -31245,20 +49921,20 @@ }, "WorkflowInput.SELECT_FIELD": { "title": "SELECT_FIELD", - "required": [ - "allowAdditionalOptions", - "key", - "name", - "options", - "required", - "type" - ], "type": "object", "allOf": [ { "$ref": "#/components/schemas/WorkflowInput" }, { + "required": [ + "allowAdditionalOptions", + "key", + "name", + "options", + "required", + "type" + ], "type": "object", "properties": { "allowAdditionalOptions": { @@ -31312,281 +49988,904 @@ } ] }, - "WorkflowInput.SLACK_FIELD": { - "title": "SLACK_FIELD", - "required": [ - "allowMultiple", - "filter", - "key", - "name", - "required", - "type" - ], + "WorkflowInput.SLACK_FIELD": { + "title": "SLACK_FIELD", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowInput" + }, + { + "required": [ + "allowMultiple", + "filter", + "key", + "name", + "required", + "type" + ], + "type": "object", + "properties": { + "allowMultiple": { + "type": "boolean", + "description": "Whether the input allows multiple values. Defaults to `false`" + }, + "defaultValue": { + "type": "array", + "description": "The default value for the input", + "items": { + "type": "string", + "description": "The default value for the input" + } + }, + "description": { + "type": "string", + "description": "The description of the input" + }, + "filter": { + "$ref": "#/components/schemas/WorkflowInputSlackFilter" + }, + "key": { + "type": "string", + "description": "The key of the input" + }, + "name": { + "type": "string", + "description": "The name of the input" + }, + "placeholder": { + "type": "string", + "description": "The placeholder for the input" + }, + "required": { + "type": "boolean", + "description": "Whether the input is required" + }, + "type": { + "type": "string" + } + } + } + ] + }, + "WorkflowInput.TEXTAREA_FIELD": { + "title": "TEXTAREA_FIELD", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowInput" + }, + { + "required": [ + "key", + "name", + "required", + "type" + ], + "type": "object", + "properties": { + "defaultValue": { + "type": "string", + "description": "The default value for the input" + }, + "description": { + "type": "string", + "description": "The description of the input" + }, + "key": { + "type": "string", + "description": "The key of the input" + }, + "name": { + "type": "string", + "description": "The name of the input" + }, + "placeholder": { + "type": "string", + "description": "The placeholder for the input" + }, + "required": { + "type": "boolean", + "description": "Whether the input is required" + }, + "type": { + "type": "string" + }, + "validationRegex": { + "type": "string", + "description": "The validation regex for the input" + } + } + } + ] + }, + "WorkflowInput.TOGGLE_FIELD": { + "title": "TOGGLE_FIELD", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowInput" + }, + { + "required": [ + "key", + "name", + "required", + "type" + ], + "type": "object", + "properties": { + "defaultValue": { + "type": "boolean", + "description": "The default value for the input" + }, + "description": { + "type": "string", + "description": "The description of the input" + }, + "key": { + "type": "string", + "description": "The key of the input" + }, + "name": { + "type": "string", + "description": "The name of the input" + }, + "required": { + "type": "boolean", + "description": "Whether the input is required" + }, + "type": { + "type": "string" + } + } + } + ] + }, + "WorkflowInputEntityFilter": { + "type": "object", + "properties": { + "domainIds": { + "type": "array", + "description": "Restrict options to entities related to the provided domains", + "items": { + "type": "string", + "description": "Restrict options to entities related to the provided domains" + } + }, + "emailOwners": { + "type": "array", + "description": "Restrict options to entities owned by the provided users", + "items": { + "type": "string", + "description": "Restrict options to entities owned by the provided users" + } + }, + "excludedGroupTags": { + "type": "array", + "description": "Restrict options to entities not in the provided groups", + "items": { + "type": "string", + "description": "Restrict options to entities not in the provided groups" + } + }, + "groupTags": { + "type": "array", + "description": "Restrict options to entities in the provided groups", + "items": { + "type": "string", + "description": "Restrict options to entities in the provided groups" + } + }, + "teamIds": { + "type": "array", + "description": "Restrict options to entities owned by the provided teams", + "items": { + "type": "string", + "description": "Restrict options to entities owned by the provided teams" + } + }, + "typeFilter": { + "$ref": "#/components/schemas/EntityTypeFilter1" + } + }, + "description": "The entity filter for the input" + }, + "WorkflowInputSlackFilter": { + "required": [ + "channels" + ], + "type": "object", + "properties": { + "channels": { + "type": "array", + "description": "Restrict options to the provided channels", + "items": { + "type": "string", + "description": "Restrict options to the provided channels" + } + } + }, + "description": "The filters for the input" + }, + "WorkflowInputUserFilter": { + "type": "object", + "properties": { + "teamCids": { + "type": "array", + "description": "Restrict options to users on the provided teams", + "items": { + "type": "string", + "description": "Restrict options to users on the provided teams" + } + }, + "userEmails": { + "type": "array", + "description": "Restrict options to users with the provided emails", + "items": { + "type": "string", + "description": "Restrict options to users with the provided emails" + } + } + }, + "description": "The user filter for the input" + }, + "WorkflowListResponse": { + "required": [ + "page", + "total", + "totalPages", + "workflows" + ], + "type": "object", + "properties": { + "page": { + "type": "integer", + "description": "Current page number, 0-indexed", + "format": "int32" + }, + "total": { + "type": "integer", + "description": "Total number of results", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "Total number of pages", + "format": "int32" + }, + "workflows": { + "type": "array", + "description": "List of workflows", + "items": { + "$ref": "#/components/schemas/WorkflowDefinition" + } + } + } + }, + "WorkflowRunActionState": { + "required": [ + "status" + ], + "type": "object", + "properties": { + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "status": { + "type": "string", + "enum": [ + "NOT_INITIATED", + "COMPLETED", + "FAILED", + "IN_PROGRESS", + "PAUSED", + "CANCELED", + "TIMED_OUT" + ] + }, + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "description": "Running state of action", + "discriminator": { + "propertyName": "status" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/WorkflowRunActionState.NotInitiated" + }, + { + "$ref": "#/components/schemas/WorkflowRunActionState.InProgress" + }, + { + "$ref": "#/components/schemas/WorkflowRunActionState.Paused" + }, + { + "$ref": "#/components/schemas/WorkflowRunActionState.TimedOut" + }, + { + "$ref": "#/components/schemas/WorkflowRunActionState.Failed" + }, + { + "$ref": "#/components/schemas/WorkflowRunActionState.Canceled" + }, + { + "$ref": "#/components/schemas/WorkflowRunActionState.Completed" + } + ] + }, + "WorkflowRunActionState.Canceled": { + "title": "Canceled", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunActionState" + }, + { + "type": "object", + "properties": { + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Inputs for the action" + }, + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Metadata from the action run" + }, + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Variables from the action run" + } + } + } + ] + }, + "WorkflowRunActionState.Completed": { + "title": "Completed", "type": "object", "allOf": [ { - "$ref": "#/components/schemas/WorkflowInput" + "$ref": "#/components/schemas/WorkflowRunActionState" }, { "type": "object", "properties": { - "allowMultiple": { - "type": "boolean", - "description": "Whether the input allows multiple values. Defaults to `false`" - }, - "defaultValue": { - "type": "array", - "description": "The default value for the input", - "items": { - "type": "string", - "description": "The default value for the input" - } + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Inputs for the action" }, - "description": { - "type": "string", - "description": "The description of the input" + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Metadata from the action run" }, - "filter": { - "$ref": "#/components/schemas/WorkflowInputSlackFilter" + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Outputs from the action" }, - "key": { + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Variables from the action run" + } + } + } + ] + }, + "WorkflowRunActionState.Failed": { + "title": "Failed", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunActionState" + }, + { + "required": [ + "errorMessage" + ], + "type": "object", + "properties": { + "errorMessage": { "type": "string", - "description": "The key of the input" + "description": "Error from the failed action" }, - "name": { - "type": "string", - "description": "The name of the input" + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Inputs for the action" }, - "placeholder": { - "type": "string", - "description": "The placeholder for the input" + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Metadata from the action run" }, - "required": { - "type": "boolean", - "description": "Whether the input is required" + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Outputs from the action" }, - "type": { - "type": "string" + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Variables from the action run" } } } ] }, - "WorkflowInput.TEXTAREA_FIELD": { - "title": "TEXTAREA_FIELD", - "required": [ - "key", - "name", - "required", - "type" - ], + "WorkflowRunActionState.InProgress": { + "title": "InProgress", "type": "object", "allOf": [ { - "$ref": "#/components/schemas/WorkflowInput" + "$ref": "#/components/schemas/WorkflowRunActionState" }, { "type": "object", "properties": { - "defaultValue": { - "type": "string", - "description": "The default value for the input" - }, - "description": { - "type": "string", - "description": "The description of the input" + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Inputs for the action" }, - "key": { - "type": "string", - "description": "The key of the input" + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Metadata from the action run" }, - "name": { - "type": "string", - "description": "The name of the input" + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Outputs from the action" }, - "placeholder": { - "type": "string", - "description": "The placeholder for the input" + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Variables from the action run" + } + } + } + ] + }, + "WorkflowRunActionState.NotInitiated": { + "title": "NotInitiated", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunActionState" + } + ] + }, + "WorkflowRunActionState.Paused": { + "title": "Paused", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunActionState" + }, + { + "type": "object", + "properties": { + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Inputs for the action" }, - "required": { - "type": "boolean", - "description": "Whether the input is required" + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Metadata from the action run" }, - "type": { - "type": "string" + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Outputs from the action" }, - "validationRegex": { - "type": "string", - "description": "The validation regex for the input" + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Variables from the action run" } } } ] }, - "WorkflowInput.TOGGLE_FIELD": { - "title": "TOGGLE_FIELD", - "required": [ - "key", - "name", - "required", - "type" - ], + "WorkflowRunActionState.TimedOut": { + "title": "TimedOut", "type": "object", "allOf": [ { - "$ref": "#/components/schemas/WorkflowInput" + "$ref": "#/components/schemas/WorkflowRunActionState" }, { "type": "object", "properties": { - "defaultValue": { - "type": "boolean", - "description": "The default value for the input" - }, - "description": { - "type": "string", - "description": "The description of the input" - }, - "key": { - "type": "string", - "description": "The key of the input" + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Inputs for the action" }, - "name": { - "type": "string", - "description": "The name of the input" + "metadata": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Metadata from the action run" }, - "required": { - "type": "boolean", - "description": "Whether the input is required" + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Outputs from the action" }, - "type": { - "type": "string" + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "description": "Variables from the action run" } } } ] }, - "WorkflowInputEntityFilter": { + "WorkflowRunDetailsResponse": { + "required": [ + "actions", + "id", + "status", + "variables", + "workflow" + ], "type": "object", "properties": { - "domainIds": { + "actions": { "type": "array", - "description": "Restrict options to entities related to the provided domains", + "description": "Actions and their states", "items": { - "type": "string", - "description": "Restrict options to entities related to the provided domains" + "$ref": "#/components/schemas/ActionRunDetailsResponse" } }, - "emailOwners": { - "type": "array", - "description": "Restrict options to entities owned by the provided users", - "items": { - "type": "string", - "description": "Restrict options to entities owned by the provided users" - } + "completedAt": { + "type": "string", + "description": "Time the workflow run completed" }, - "excludedGroupTags": { - "type": "array", - "description": "Restrict options to entities in the provided groups", - "items": { - "type": "string", - "description": "Restrict options to entities in the provided groups" - } + "context": { + "type": "object", + "additionalProperties": { + "type": "object", + "description": "Context of the run. Omitted when the request sets `includeContext\u003dfalse`, which is the default for MCP clients." + }, + "description": "Context of the run. Omitted when the request sets `includeContext\u003dfalse`, which is the default for MCP clients." }, - "groupTags": { - "type": "array", - "description": "Restrict options to entities not in the provided groups", - "items": { - "type": "string", - "description": "Restrict options to entities not in the provided groups" - } + "id": { + "type": "string", + "description": "Id of the run" }, - "teamIds": { - "type": "array", - "description": "Restrict options to entities owned by the provided teams", - "items": { - "type": "string", - "description": "Restrict options to entities owned by the provided teams" - } + "initiatedBy": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiKey" + }, + { + "$ref": "#/components/schemas/User" + } + ] }, - "typeFilter": { - "$ref": "#/components/schemas/EntityTypeFilter1" + "runResponse": { + "type": "string" + }, + "startedAt": { + "type": "string", + "description": "Time the workflow run started" + }, + "status": { + "type": "string", + "description": "Status of the workflow run. `PAUSED` means it waits for a user input or an approval.", + "enum": [ + "NOT_INITIATED", + "IN_PROGRESS", + "PAUSED", + "COMPLETED", + "FAILED", + "CANCELLED", + "TIMED_OUT" + ] + }, + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/WorkflowRunDetailsVariableResponse" + }, + "description": "Variable values" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowSummary" + } + } + }, + "WorkflowRunDetailsVariableResponse": { + "required": [ + "type", + "value" + ], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The type of the variable" + }, + "value": { + "$ref": "#/components/schemas/JsonNode" } }, - "description": "The entity filter for the input" + "description": "Variable values" }, - "WorkflowInputSlackFilter": { + "WorkflowRunInitiatorResponse": { "required": [ - "channels" + "type" ], "type": "object", "properties": { - "channels": { - "type": "array", - "description": "Restrict options to the provided channels", - "items": { - "type": "string", - "description": "Restrict options to the provided channels" - } + "type": { + "type": "string" } }, - "description": "The filters for the input" + "description": "Who initiated the workflow run", + "discriminator": { + "propertyName": "type" + } }, - "WorkflowInputUserFilter": { + "WorkflowRunRequest": { + "required": [ + "scope" + ], "type": "object", "properties": { - "teamCids": { - "type": "array", - "description": "Restrict options to users on the provided teams", - "items": { - "type": "string", - "description": "Restrict options to users on the provided teams" - } + "initialContext": { + "$ref": "#/components/schemas/JsonNode" }, - "userEmails": { + "notificationRecipients": { "type": "array", - "description": "Restrict options to users with the provided emails", + "description": "List of email addresses to notify of workflow updates.", "items": { "type": "string", - "description": "Restrict options to users with the provided emails" + "description": "List of email addresses to notify of workflow updates." } + }, + "runAs": { + "type": "string", + "description": "User\u0027s email to run the workflow as" + }, + "scope": { + "$ref": "#/components/schemas/WorkflowRunScopeRequest" } - }, - "description": "The user filter for the input" + } }, - "WorkflowListResponse": { + "WorkflowRunScopeRequest": { "required": [ - "page", - "total", - "totalPages", - "workflows" + "type" ], "type": "object", "properties": { - "page": { - "type": "integer", - "description": "Current page number, 0-indexed", - "format": "int32" + "type": { + "type": "string", + "description": "Must match the workflow filter type: `GLOBAL` for a GLOBAL filter, `ENTITY` for an ENTITY filter", + "enum": [ + "GLOBAL", + "ENTITY" + ] + } + }, + "description": "Scope of the workflow run (e.g., target entities)", + "discriminator": { + "propertyName": "type" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/WorkflowRunScopeRequest.GLOBAL" }, - "total": { - "type": "integer", - "description": "Total number of results", - "format": "int32" + { + "$ref": "#/components/schemas/WorkflowRunScopeRequest.ENTITY" + } + ] + }, + "WorkflowRunScopeRequest.ENTITY": { + "title": "ENTITY", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunScopeRequest" }, - "totalPages": { - "type": "integer", - "description": "Total number of pages", - "format": "int32" + { + "required": [ + "entityId", + "type" + ], + "type": "object", + "properties": { + "entityId": { + "type": "string", + "description": "The tag or CID of the entity to run the workflow on" + }, + "type": { + "type": "string" + } + } + } + ] + }, + "WorkflowRunScopeRequest.GLOBAL": { + "title": "GLOBAL", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/WorkflowRunScopeRequest" }, - "workflows": { - "type": "array", - "description": "List of workflows", - "items": { - "$ref": "#/components/schemas/WorkflowDefinition" + { + "required": [ + "type" + ], + "type": "object", + "properties": { + "type": { + "type": "string" + } } } + ] + }, + "WorkflowRunSummaryResponse": { + "required": [ + "id", + "status", + "variables", + "workflow" + ], + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "description": "Time the workflow run completed" + }, + "context": { + "type": "object", + "additionalProperties": { + "type": "object", + "description": "Context of the run. Omitted when the request sets `includeContext\u003dfalse`, which is the default for MCP clients." + }, + "description": "Context of the run. Omitted when the request sets `includeContext\u003dfalse`, which is the default for MCP clients." + }, + "id": { + "type": "string", + "description": "Id of the run" + }, + "initiatedBy": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiKey" + }, + { + "$ref": "#/components/schemas/User" + } + ] + }, + "runResponse": { + "type": "string" + }, + "startedAt": { + "type": "string", + "description": "Time the workflow run started" + }, + "status": { + "type": "string", + "description": "Status of the workflow run. `PAUSED` means it waits for a user input or an approval.", + "enum": [ + "NOT_INITIATED", + "IN_PROGRESS", + "PAUSED", + "COMPLETED", + "FAILED", + "CANCELLED", + "TIMED_OUT" + ] + }, + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/WorkflowRunDetailsVariableResponse" + }, + "description": "Variable values" + }, + "workflow": { + "$ref": "#/components/schemas/WorkflowSummary" + } } }, + "WorkflowSummary": { + "required": [ + "cid", + "name" + ], + "type": "object", + "properties": { + "cid": { + "type": "string", + "description": "The id of the workflow" + }, + "name": { + "type": "string", + "description": "The slug of the workflow" + } + }, + "description": "Summary of the workflow" + }, "WorkflowVariable": { "required": [ "slug", @@ -31597,9 +50896,13 @@ "defaultValue": { "$ref": "#/components/schemas/JsonNode" }, + "description": { + "type": "string", + "description": "The description of the variable" + }, "slug": { "type": "string", - "description": "The slug of the variable" + "description": "The slug of the variable. Use lowercase letters, digits and hyphens, 2 to 255 characters, not starting or ending with a hyphen." }, "type": { "type": "string", @@ -31616,7 +50919,45 @@ ] } }, - "description": "List of variable definitions for the workflow" + "description": "List of variable definitions for the workflow. Set run values with `initialContext`." + }, + "XMattersConfiguration": { + "required": [ + "lastFour", + "organizationSlug", + "username" + ], + "type": "object", + "properties": { + "lastFour": { + "type": "string" + }, + "organizationSlug": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "XMattersConfigurationRequest": { + "required": [ + "organizationSlug", + "password", + "username" + ], + "type": "object", + "properties": { + "organizationSlug": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } }, "YamlDescriptorsListResponse": { "required": [