{ "components": { "parameters": { "relatableEntityType": { "description": "Type of the entity (deployment, environment, or resource)", "in": "path", "name": "relatableEntityType", "required": true, "schema": { "$ref": "#/components/schemas/RelatableEntityType" } } }, "schemas": { "AnyApprovalRule": { "properties": { "minApprovals": { "format": "int32", "type": "integer" } }, "required": [ "minApprovals" ], "type": "object" }, "ApprovalStatus": { "enum": [ "approved", "rejected" ], "type": "string" }, "ArgoCDJobAgentConfig": { "properties": { "apiKey": { "description": "ArgoCD API token.", "type": "string" }, "serverUrl": { "description": "ArgoCD server address (host[:port] or URL).", "type": "string" }, "template": { "description": "ArgoCD application template.", "type": "string" } }, "required": [ "serverUrl", "apiKey", "template" ], "type": "object" }, "BooleanValue": { "type": "boolean" }, "CelMatcher": { "properties": { "cel": { "type": "string" } }, "required": [ "cel" ], "type": "object" }, "CelSelector": { "properties": { "cel": { "type": "string" } }, "required": [ "cel" ], "type": "object" }, "DatadogMetricProvider": { "properties": { "aggregator": { "default": "last", "description": "Datadog aggregator", "enum": [ "avg", "min", "max", "sum", "last", "percentile", "mean", "l2norm", "area" ], "type": "string" }, "apiKey": { "description": "Datadog API key (supports Go templates for variable references)", "example": "{{.variables.dd_api_key}}", "type": "string" }, "appKey": { "description": "Datadog Application key (supports Go templates for variable references)", "example": "{{.variables.dd_app_key}}", "type": "string" }, "formula": { "description": "Datadog formula (supports Go templates)", "type": "string" }, "intervalSeconds": { "example": 30, "format": "int64", "maximum": 3600, "minimum": 1, "type": "integer" }, "queries": { "additionalProperties": { "type": "string" }, "description": "Datadog metrics queries (supports Go templates)", "example": { "q": "sum:requests.error.rate{service:{{.resource.name}}}" }, "type": "object" }, "site": { "default": "datadoghq.com", "description": "Datadog site URL (e.g., datadoghq.com, datadoghq.eu, us3.datadoghq.com)", "type": "string" }, "type": { "description": "Provider type", "enum": [ "datadog" ], "type": "string" } }, "required": [ "type", "apiKey", "appKey", "queries" ], "type": "object" }, "DeployDecision": { "properties": { "policyResults": { "items": { "$ref": "#/components/schemas/PolicyEvaluation" }, "type": "array" } }, "required": [ "policyResults" ], "type": "object" }, "Deployment": { "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "jobAgentConfig": { "$ref": "#/components/schemas/JobAgentConfig" }, "jobAgentId": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "resourceSelector": { "$ref": "#/components/schemas/Selector" }, "slug": { "type": "string" }, "systemId": { "type": "string" } }, "required": [ "id", "name", "slug", "systemId", "jobAgentConfig", "metadata" ], "type": "object" }, "DeploymentAndSystem": { "properties": { "deployment": { "$ref": "#/components/schemas/Deployment" }, "system": { "$ref": "#/components/schemas/System" } }, "required": [ "deployment", "system" ], "type": "object" }, "DeploymentDependencyRule": { "properties": { "dependsOnDeploymentSelector": { "$ref": "#/components/schemas/Selector" }, "reference": { "description": "Reference to the entity that this rule depends on", "type": "string" } }, "required": [ "dependsOnDeploymentSelector" ], "type": "object" }, "DeploymentVariable": { "properties": { "defaultValue": { "$ref": "#/components/schemas/LiteralValue" }, "deploymentId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" } }, "required": [ "id", "key", "deploymentId" ], "type": "object" }, "DeploymentVariableValue": { "properties": { "deploymentVariableId": { "type": "string" }, "id": { "type": "string" }, "priority": { "format": "int64", "type": "integer" }, "resourceSelector": { "$ref": "#/components/schemas/Selector" }, "value": { "$ref": "#/components/schemas/Value" } }, "required": [ "id", "deploymentVariableId", "priority", "value" ], "type": "object" }, "DeploymentVariableWithValues": { "properties": { "values": { "items": { "$ref": "#/components/schemas/DeploymentVariableValue" }, "type": "array" }, "variable": { "$ref": "#/components/schemas/DeploymentVariable" } }, "required": [ "variable", "values" ], "type": "object" }, "DeploymentVersion": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "jobAgentConfig": { "$ref": "#/components/schemas/JobAgentConfig" }, "message": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "status": { "$ref": "#/components/schemas/DeploymentVersionStatus" }, "tag": { "type": "string" } }, "required": [ "id", "name", "tag", "config", "jobAgentConfig", "deploymentId", "status", "createdAt", "metadata" ], "type": "object" }, "DeploymentVersionStatus": { "enum": [ "unspecified", "building", "ready", "failed", "rejected", "paused" ], "type": "string" }, "DeploymentWindowRule": { "properties": { "allowWindow": { "default": true, "description": "If true, deployments are only allowed during the window. If false, deployments are blocked during the window (deny window)", "type": "boolean" }, "durationMinutes": { "description": "Duration of each deployment window in minutes", "format": "int32", "minimum": 1, "type": "integer" }, "rrule": { "description": "RFC 5545 recurrence rule defining when deployment windows start (e.g., FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9)", "type": "string" }, "timezone": { "description": "IANA timezone for the rrule (e.g., America/New_York). Defaults to UTC if not specified", "type": "string" } }, "required": [ "rrule", "durationMinutes" ], "type": "object" }, "DeploymentWithVariables": { "properties": { "deployment": { "$ref": "#/components/schemas/Deployment" }, "variables": { "items": { "$ref": "#/components/schemas/DeploymentVariableWithValues" }, "type": "array" } }, "required": [ "deployment", "variables" ], "type": "object" }, "EntityRelation": { "properties": { "direction": { "$ref": "#/components/schemas/RelationDirection" }, "entity": { "$ref": "#/components/schemas/RelatableEntity" }, "entityId": { "description": "ID of the related entity", "type": "string" }, "entityType": { "$ref": "#/components/schemas/RelatableEntityType" }, "rule": { "$ref": "#/components/schemas/RelationshipRule" } }, "required": [ "rule", "direction", "entityType", "entityId", "entity" ], "type": "object" }, "Environment": { "properties": { "createdAt": { "format": "date-time", "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "resourceSelector": { "$ref": "#/components/schemas/Selector" }, "systemId": { "type": "string" } }, "required": [ "id", "name", "systemId", "createdAt", "metadata" ], "type": "object" }, "EnvironmentProgressionRule": { "properties": { "dependsOnEnvironmentSelector": { "$ref": "#/components/schemas/Selector" }, "maximumAgeHours": { "description": "Maximum age of dependency deployment before blocking progression (prevents stale promotions)", "format": "int32", "minimum": 0, "type": "integer" }, "minimumSockTimeMinutes": { "default": 0, "description": "Minimum time to wait after the depends on environment is in a success state before the current environment can be deployed", "format": "int32", "minimum": 0, "type": "integer" }, "minimumSuccessPercentage": { "default": 100, "format": "float", "maximum": 100, "minimum": 0, "type": "number" }, "successStatuses": { "items": { "$ref": "#/components/schemas/JobStatus" }, "type": "array" } }, "required": [ "dependsOnEnvironmentSelector" ], "type": "object" }, "EnvironmentSummary": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "ErrorResponse": { "properties": { "error": { "example": "Workspace not found", "type": "string" } }, "type": "object" }, "EvaluateReleaseTargetRequest": { "properties": { "releaseTarget": { "$ref": "#/components/schemas/ReleaseTarget" }, "version": { "$ref": "#/components/schemas/DeploymentVersion" } }, "required": [ "releaseTarget", "version" ], "type": "object" }, "EvaluationScope": { "properties": { "environmentId": { "type": "string" }, "versionId": { "type": "string" } }, "type": "object" }, "GithubEntity": { "properties": { "installationId": { "type": "integer" }, "slug": { "type": "string" } }, "required": [ "installationId", "slug" ], "type": "object" }, "GithubJobAgentConfig": { "properties": { "installationId": { "description": "GitHub app installation ID.", "format": "int", "type": "integer" }, "owner": { "description": "GitHub repository owner.", "type": "string" }, "ref": { "description": "Git ref to run the workflow on (defaults to \"main\" if omitted).", "type": "string" }, "repo": { "description": "GitHub repository name.", "type": "string" }, "workflowId": { "description": "GitHub Actions workflow ID.", "format": "int64", "type": "integer" } }, "required": [ "installationId", "owner", "repo", "workflowId" ], "type": "object" }, "GradualRolloutRule": { "properties": { "rolloutType": { "description": "Strategy for scheduling deployments to release targets. \"linear\": Each target is deployed at a fixed interval of timeScaleInterval seconds. \"linear-normalized\": Deployments are spaced evenly so that the last target is scheduled at or before timeScaleInterval seconds. See rolloutType algorithm documentation for details.", "enum": [ "linear", "linear-normalized" ], "type": "string" }, "timeScaleInterval": { "description": "Base time interval in seconds used to compute the delay between deployments to release targets.", "format": "int32", "minimum": 0, "type": "integer" } }, "required": [ "timeScaleInterval", "rolloutType" ], "type": "object" }, "HTTPMetricProvider": { "properties": { "body": { "description": "Request body (supports Go templates)", "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "description": "HTTP headers (values support Go templates)", "type": "object" }, "method": { "default": "GET", "description": "HTTP method", "enum": [ "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS" ], "type": "string" }, "timeout": { "default": "30s", "description": "Request timeout (duration string, e.g., \"30s\")", "type": "string" }, "type": { "description": "Provider type", "enum": [ "http" ], "type": "string" }, "url": { "description": "HTTP endpoint URL (supports Go templates)", "example": "http://{{ .resource.name }}.{{ .environment.name }}/health", "type": "string" } }, "required": [ "type", "url" ], "type": "object" }, "IntegerValue": { "type": "integer" }, "Job": { "properties": { "completedAt": { "format": "date-time", "type": "string" }, "createdAt": { "format": "date-time", "type": "string" }, "externalId": { "type": "string" }, "id": { "type": "string" }, "jobAgentConfig": { "$ref": "#/components/schemas/JobAgentConfig" }, "jobAgentId": { "type": "string" }, "message": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "releaseId": { "type": "string" }, "startedAt": { "format": "date-time", "type": "string" }, "status": { "$ref": "#/components/schemas/JobStatus" }, "traceToken": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "workflowJobId": { "type": "string" } }, "required": [ "id", "releaseId", "workflowJobId", "jobAgentId", "jobAgentConfig", "status", "createdAt", "updatedAt", "metadata" ], "type": "object" }, "JobAgent": { "properties": { "config": { "$ref": "#/components/schemas/JobAgentConfig" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "type": { "type": "string" }, "workspaceId": { "type": "string" } }, "required": [ "id", "workspaceId", "name", "type", "config" ], "type": "object" }, "JobAgentConfig": { "additionalProperties": true, "type": "object" }, "JobStatus": { "enum": [ "cancelled", "skipped", "inProgress", "actionRequired", "pending", "failure", "invalidJobAgent", "invalidIntegration", "externalRunNotFound", "successful" ], "type": "string" }, "JobSummary": { "properties": { "id": { "type": "string" }, "links": { "additionalProperties": { "type": "string" }, "description": "External links extracted from job metadata", "type": "object" }, "message": { "type": "string" }, "status": { "$ref": "#/components/schemas/JobStatus" }, "verifications": { "items": { "$ref": "#/components/schemas/JobVerification" }, "type": "array" } }, "required": [ "id", "status", "verifications" ], "type": "object" }, "JobUpdateEvent": { "oneOf": [ { "required": [ "id" ] }, { "required": [ "agentId", "externalId" ] } ], "properties": { "agentId": { "type": "string" }, "externalId": { "type": "string" }, "fieldsToUpdate": { "items": { "enum": [ "completedAt", "createdAt", "externalId", "id", "jobAgentConfig", "jobAgentId", "message", "metadata", "releaseId", "startedAt", "status", "traceToken", "updatedAt", "workflowJobId" ], "type": "string" }, "type": "array" }, "id": { "type": "string" }, "job": { "$ref": "#/components/schemas/Job" } }, "required": [ "job" ], "type": "object" }, "JobVerification": { "properties": { "createdAt": { "description": "When verification was created", "format": "date-time", "type": "string" }, "id": { "type": "string" }, "jobId": { "type": "string" }, "message": { "description": "Summary message of verification result", "type": "string" }, "metrics": { "description": "Metrics associated with this verification", "items": { "$ref": "#/components/schemas/VerificationMetricStatus" }, "type": "array" } }, "required": [ "id", "jobId", "metrics", "createdAt" ], "type": "object" }, "JobVerificationStatus": { "enum": [ "running", "passed", "failed", "cancelled" ], "type": "string" }, "JobWithRelease": { "properties": { "deployment": { "$ref": "#/components/schemas/Deployment" }, "environment": { "$ref": "#/components/schemas/Environment" }, "job": { "$ref": "#/components/schemas/Job" }, "release": { "$ref": "#/components/schemas/Release" }, "resource": { "$ref": "#/components/schemas/Resource" } }, "required": [ "job", "release" ], "type": "object" }, "JobWithVerifications": { "properties": { "job": { "$ref": "#/components/schemas/Job" }, "verifications": { "items": { "$ref": "#/components/schemas/JobVerification" }, "type": "array" } }, "required": [ "job", "verifications" ], "type": "object" }, "JsonSelector": { "properties": { "json": { "additionalProperties": true, "type": "object" } }, "required": [ "json" ], "type": "object" }, "LiteralValue": { "oneOf": [ { "$ref": "#/components/schemas/BooleanValue" }, { "$ref": "#/components/schemas/NumberValue" }, { "$ref": "#/components/schemas/IntegerValue" }, { "$ref": "#/components/schemas/StringValue" }, { "$ref": "#/components/schemas/ObjectValue" }, { "$ref": "#/components/schemas/NullValue" } ] }, "MetricProvider": { "discriminator": { "mapping": { "datadog": "#/components/schemas/DatadogMetricProvider", "http": "#/components/schemas/HTTPMetricProvider", "prometheus": "#/components/schemas/PrometheusMetricProvider", "sleep": "#/components/schemas/SleepMetricProvider", "terraformCloudRun": "#/components/schemas/TerraformCloudRunMetricProvider" }, "propertyName": "type" }, "oneOf": [ { "$ref": "#/components/schemas/HTTPMetricProvider" }, { "$ref": "#/components/schemas/SleepMetricProvider" }, { "$ref": "#/components/schemas/DatadogMetricProvider" }, { "$ref": "#/components/schemas/PrometheusMetricProvider" }, { "$ref": "#/components/schemas/TerraformCloudRunMetricProvider" } ] }, "NullValue": { "enum": [ true ], "type": "boolean" }, "NumberValue": { "type": "number" }, "ObjectValue": { "properties": { "object": { "additionalProperties": true, "type": "object" } }, "required": [ "object" ], "type": "object" }, "Policy": { "properties": { "createdAt": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "description": "Arbitrary metadata for the policy (record)", "type": "object" }, "name": { "type": "string" }, "priority": { "type": "integer" }, "rules": { "items": { "$ref": "#/components/schemas/PolicyRule" }, "type": "array" }, "selector": { "description": "CEL expression for matching release targets. Use \"true\" to match all targets.", "type": "string" }, "workspaceId": { "type": "string" } }, "required": [ "id", "name", "createdAt", "workspaceId", "selector", "rules", "metadata", "priority", "enabled" ], "type": "object" }, "PolicyEvaluation": { "properties": { "policy": { "$ref": "#/components/schemas/Policy", "nullable": true }, "ruleResults": { "items": { "$ref": "#/components/schemas/RuleEvaluation" }, "type": "array" }, "summary": { "type": "string" } }, "required": [ "ruleResults" ], "type": "object" }, "PolicyRule": { "properties": { "anyApproval": { "$ref": "#/components/schemas/AnyApprovalRule" }, "createdAt": { "type": "string" }, "deploymentDependency": { "$ref": "#/components/schemas/DeploymentDependencyRule" }, "deploymentWindow": { "$ref": "#/components/schemas/DeploymentWindowRule" }, "environmentProgression": { "$ref": "#/components/schemas/EnvironmentProgressionRule" }, "gradualRollout": { "$ref": "#/components/schemas/GradualRolloutRule" }, "id": { "type": "string" }, "policyId": { "type": "string" }, "retry": { "$ref": "#/components/schemas/RetryRule" }, "rollback": { "$ref": "#/components/schemas/RollbackRule" }, "verification": { "$ref": "#/components/schemas/VerificationRule" }, "versionCooldown": { "$ref": "#/components/schemas/VersionCooldownRule" }, "versionSelector": { "$ref": "#/components/schemas/VersionSelectorRule" } }, "required": [ "id", "policyId", "createdAt" ], "type": "object" }, "PolicySkip": { "properties": { "createdAt": { "description": "When this skip was created", "format": "date-time", "type": "string" }, "createdBy": { "description": "User ID who created this skip", "type": "string" }, "environmentId": { "description": "Environment this skip applies to. If null, applies to all environments.", "type": "string" }, "expiresAt": { "description": "When this skip expires. If null, skip never expires.", "format": "date-time", "type": "string" }, "id": { "description": "Unique identifier for the skip", "type": "string" }, "reason": { "description": "Required reason for why this skip is needed (e.g., incident ticket, emergency situation)", "type": "string" }, "resourceId": { "description": "Resource this skip applies to. If null, applies to all resources (in the environment if specified, or globally).", "type": "string" }, "ruleId": { "description": "Rule ID this skip applies to", "type": "string" }, "versionId": { "description": "Deployment version this skip applies to", "type": "string" }, "workspaceId": { "description": "Workspace this skip belongs to", "type": "string" } }, "required": [ "id", "workspaceId", "versionId", "ruleId", "reason", "createdBy", "createdAt" ], "type": "object" }, "PrometheusMetricProvider": { "properties": { "address": { "description": "Prometheus server address (supports Go templates)", "example": "http://prometheus.example.com:9090", "type": "string" }, "authentication": { "description": "Authentication configuration for Prometheus", "properties": { "bearerToken": { "description": "Bearer token for authentication (supports Go templates for variable references)", "example": "{{.variables.prometheus_token}}", "type": "string" }, "oauth2": { "description": "OAuth2 client credentials flow", "properties": { "clientId": { "description": "OAuth2 client ID (supports Go templates)", "type": "string" }, "clientSecret": { "description": "OAuth2 client secret (supports Go templates)", "type": "string" }, "scopes": { "description": "OAuth2 scopes", "items": { "type": "string" }, "type": "array" }, "tokenUrl": { "description": "Token endpoint URL", "type": "string" } }, "required": [ "tokenUrl", "clientId", "clientSecret" ], "type": "object" } }, "type": "object" }, "headers": { "description": "Additional HTTP headers for the Prometheus request (values support Go templates)", "items": { "properties": { "key": { "example": "X-Scope-OrgID", "type": "string" }, "value": { "example": "tenant_a", "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "insecure": { "default": false, "description": "Skip TLS certificate verification", "type": "boolean" }, "query": { "description": "PromQL query expression (supports Go templates)", "example": "sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"{{.resource.name}}\",response_code!~\"5.*\"}[5m]))", "type": "string" }, "rangeQuery": { "description": "If provided, a range query (/api/v1/query_range) is used instead of an instant query (/api/v1/query)", "properties": { "end": { "description": "How far back from now for the query end, as a Prometheus duration (e.g., \"0s\" for now, \"1m\" for 1 minute ago). Defaults to \"0s\" (now) if unset.", "example": "0s", "type": "string" }, "start": { "description": "How far back from now to start the query, as a Prometheus duration (e.g., \"5m\", \"1h\"). Defaults to 10 * step if unset.", "example": "5m", "type": "string" }, "step": { "description": "Query resolution step width as a Prometheus duration (e.g., \"15s\", \"1m\", \"500ms\")", "example": "1m", "type": "string" } }, "required": [ "step" ], "type": "object" }, "timeout": { "description": "Query timeout in seconds", "example": 30, "format": "int64", "type": "integer" }, "type": { "description": "Provider type", "enum": [ "prometheus" ], "type": "string" } }, "required": [ "type", "address", "query" ], "type": "object" }, "PropertiesMatcher": { "properties": { "properties": { "items": { "$ref": "#/components/schemas/PropertyMatcher" }, "type": "array" } }, "required": [ "properties" ], "type": "object" }, "PropertyMatcher": { "properties": { "fromProperty": { "items": { "type": "string" }, "type": "array" }, "operator": { "enum": [ "equals", "notEquals", "contains", "startsWith", "endsWith", "regex" ], "type": "string" }, "toProperty": { "items": { "type": "string" }, "type": "array" } }, "required": [ "fromProperty", "toProperty", "operator" ], "type": "object" }, "ReferenceValue": { "properties": { "path": { "items": { "type": "string" }, "type": "array" }, "reference": { "type": "string" } }, "required": [ "reference", "path" ], "type": "object" }, "RelatableEntity": { "oneOf": [ { "$ref": "#/components/schemas/Deployment" }, { "$ref": "#/components/schemas/Environment" }, { "$ref": "#/components/schemas/Resource" } ] }, "RelatableEntityType": { "enum": [ "deployment", "environment", "resource" ], "type": "string" }, "RelationDirection": { "enum": [ "from", "to" ], "type": "string" }, "RelationshipRule": { "properties": { "description": { "type": "string" }, "fromSelector": { "$ref": "#/components/schemas/Selector" }, "fromType": { "$ref": "#/components/schemas/RelatableEntityType" }, "id": { "type": "string" }, "matcher": { "oneOf": [ { "$ref": "#/components/schemas/CelMatcher" }, { "$ref": "#/components/schemas/PropertiesMatcher" } ] }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "reference": { "type": "string" }, "relationshipType": { "type": "string" }, "toSelector": { "$ref": "#/components/schemas/Selector" }, "toType": { "$ref": "#/components/schemas/RelatableEntityType" }, "workspaceId": { "type": "string" } }, "required": [ "id", "name", "reference", "fromType", "toType", "matcher", "relationshipType", "metadata", "workspaceId" ], "type": "object" }, "Release": { "properties": { "createdAt": { "type": "string" }, "encryptedVariables": { "items": { "type": "string" }, "type": "array" }, "releaseTarget": { "$ref": "#/components/schemas/ReleaseTarget" }, "variables": { "additionalProperties": { "$ref": "#/components/schemas/LiteralValue" }, "type": "object" }, "version": { "$ref": "#/components/schemas/DeploymentVersion" } }, "required": [ "version", "variables", "encryptedVariables", "releaseTarget", "createdAt" ], "type": "object" }, "ReleaseTarget": { "properties": { "deploymentId": { "type": "string" }, "environmentId": { "type": "string" }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "environmentId", "deploymentId" ], "type": "object" }, "ReleaseTargetAndState": { "properties": { "releaseTarget": { "$ref": "#/components/schemas/ReleaseTarget" }, "state": { "$ref": "#/components/schemas/ReleaseTargetState" } }, "required": [ "releaseTarget", "state" ], "type": "object" }, "ReleaseTargetPreview": { "properties": { "deployment": { "$ref": "#/components/schemas/Deployment" }, "environment": { "$ref": "#/components/schemas/Environment" }, "system": { "$ref": "#/components/schemas/System" } }, "required": [ "system", "deployment", "environment" ], "type": "object" }, "ReleaseTargetState": { "properties": { "currentRelease": { "$ref": "#/components/schemas/Release" }, "desiredRelease": { "$ref": "#/components/schemas/Release" }, "latestJob": { "$ref": "#/components/schemas/JobWithVerifications" } }, "type": "object" }, "ReleaseTargetSummary": { "properties": { "currentVersion": { "$ref": "#/components/schemas/VersionSummary" }, "desiredVersion": { "$ref": "#/components/schemas/VersionSummary" }, "environment": { "$ref": "#/components/schemas/EnvironmentSummary" }, "latestJob": { "$ref": "#/components/schemas/JobSummary" }, "releaseTarget": { "$ref": "#/components/schemas/ReleaseTarget" }, "resource": { "$ref": "#/components/schemas/ResourceSummary" } }, "required": [ "releaseTarget", "resource", "environment" ], "type": "object" }, "ReleaseTargetWithState": { "properties": { "deployment": { "$ref": "#/components/schemas/Deployment" }, "environment": { "$ref": "#/components/schemas/Environment" }, "releaseTarget": { "$ref": "#/components/schemas/ReleaseTarget" }, "resource": { "$ref": "#/components/schemas/Resource" }, "state": { "$ref": "#/components/schemas/ReleaseTargetState" } }, "required": [ "releaseTarget", "state", "environment", "resource", "deployment" ], "type": "object" }, "ResolvedPolicy": { "properties": { "environmentIds": { "items": { "type": "string" }, "type": "array" }, "policy": { "$ref": "#/components/schemas/Policy" }, "releaseTargets": { "items": { "$ref": "#/components/schemas/ReleaseTarget" }, "type": "array" } }, "required": [ "policy", "environmentIds", "releaseTargets" ], "type": "object" }, "Resource": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "deletedAt": { "format": "date-time", "type": "string" }, "id": { "type": "string" }, "identifier": { "type": "string" }, "kind": { "type": "string" }, "lockedAt": { "format": "date-time", "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "providerId": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "version": { "type": "string" }, "workspaceId": { "type": "string" } }, "required": [ "id", "name", "version", "kind", "identifier", "createdAt", "workspaceId", "config", "metadata" ], "type": "object" }, "ResourcePreviewRequest": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "identifier": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "version": { "type": "string" } }, "required": [ "name", "version", "kind", "identifier", "config", "metadata" ], "type": "object" }, "ResourceProvider": { "properties": { "createdAt": { "format": "date-time", "type": "string" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "workspaceId": { "format": "uuid", "type": "string" } }, "required": [ "id", "workspaceId", "name", "createdAt", "metadata" ], "type": "object" }, "ResourceSummary": { "properties": { "id": { "type": "string" }, "identifier": { "type": "string" }, "kind": { "type": "string" }, "name": { "type": "string" }, "version": { "type": "string" } }, "required": [ "id", "name", "kind", "version", "identifier" ], "type": "object" }, "ResourceVariable": { "properties": { "key": { "type": "string" }, "resourceId": { "type": "string" }, "value": { "$ref": "#/components/schemas/Value" } }, "required": [ "resourceId", "key", "value" ], "type": "object" }, "ResourceVariablesBulkUpdateEvent": { "properties": { "resourceId": { "type": "string" }, "variables": { "additionalProperties": true, "type": "object" } }, "required": [ "resourceId", "variables" ], "type": "object" }, "RetryRule": { "properties": { "backoffSeconds": { "description": "Minimum seconds to wait between retry attempts. If null, retries are allowed immediately after job completion.", "format": "int32", "minimum": 0, "type": "integer" }, "backoffStrategy": { "default": "linear", "description": "Backoff strategy: \"linear\" uses constant backoffSeconds delay, \"exponential\" doubles the delay with each retry (backoffSeconds * 2^(attempt-1)).", "enum": [ "linear", "exponential" ], "type": "string" }, "maxBackoffSeconds": { "description": "Maximum backoff time in seconds (cap for exponential backoff). If null, no maximum is enforced.", "format": "int32", "minimum": 0, "type": "integer" }, "maxRetries": { "description": "Maximum number of retries allowed. 0 means no retries (1 attempt total), 3 means up to 4 attempts (1 initial + 3 retries).", "format": "int32", "minimum": 0, "type": "integer" }, "retryOnStatuses": { "description": "Job statuses that count toward the retry limit. If null or empty, defaults to [\"failure\", \"invalidIntegration\", \"invalidJobAgent\"] for maxRetries > 0, or [\"failure\", \"invalidIntegration\", \"invalidJobAgent\", \"successful\"] for maxRetries = 0. Cancelled and skipped jobs never count by default (allows redeployment after cancellation). Example: [\"failure\", \"cancelled\"] will only count failed/cancelled jobs.", "items": { "$ref": "#/components/schemas/JobStatus" }, "type": "array" } }, "required": [ "maxRetries" ], "type": "object" }, "RollbackRule": { "properties": { "onJobStatuses": { "description": "Job statuses that will trigger a rollback", "items": { "$ref": "#/components/schemas/JobStatus" }, "type": "array" }, "onVerificationFailure": { "default": false, "description": "If true, a release target will be rolled back if the verification fails", "type": "boolean" } }, "type": "object" }, "RuleEvaluation": { "properties": { "actionRequired": { "description": "Whether the rule requires an action (e.g., approval, wait)", "type": "boolean" }, "actionType": { "description": "Type of action required", "enum": [ "approval", "wait" ], "type": "string" }, "allowed": { "description": "Whether the rule allows the deployment", "type": "boolean" }, "details": { "additionalProperties": true, "description": "Additional details about the rule evaluation", "type": "object" }, "message": { "description": "Human-readable explanation of the rule result", "type": "string" }, "nextEvaluationTime": { "description": "The time when this rule should be re-evaluated (e.g., when soak time will be complete, when gradual rollout schedule is due)", "format": "date-time", "type": "string" }, "ruleId": { "description": "The ID of the rule that was evaluated", "type": "string" }, "satisfiedAt": { "description": "The time when the rule requirement was satisfied (e.g., when approvals were met, soak time completed)", "format": "date-time", "type": "string" } }, "required": [ "ruleId", "allowed", "actionRequired", "message", "details" ], "type": "object" }, "Selector": { "oneOf": [ { "$ref": "#/components/schemas/JsonSelector" }, { "$ref": "#/components/schemas/CelSelector" } ] }, "SensitiveValue": { "properties": { "valueHash": { "type": "string" } }, "required": [ "valueHash" ], "type": "object" }, "SleepMetricProvider": { "properties": { "durationSeconds": { "example": 30, "format": "int32", "maximum": 3600, "minimum": 1, "type": "integer" }, "type": { "description": "Provider type", "enum": [ "sleep" ], "type": "string" } }, "required": [ "type", "durationSeconds" ], "type": "object" }, "StringValue": { "type": "string" }, "System": { "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "workspaceId": { "type": "string" } }, "required": [ "id", "workspaceId", "name" ], "type": "object" }, "TerraformCloudJobAgentConfig": { "properties": { "address": { "description": "Terraform Cloud address (e.g. https://app.terraform.io).", "type": "string" }, "organization": { "description": "Terraform Cloud organization name.", "type": "string" }, "template": { "description": "Terraform Cloud workspace template.", "type": "string" }, "token": { "description": "Terraform Cloud API token.", "type": "string" } }, "required": [ "address", "organization", "token", "template" ], "type": "object" }, "TerraformCloudRunMetricProvider": { "properties": { "address": { "description": "Terraform Cloud address", "example": "https://app.terraform.io", "type": "string" }, "runId": { "description": "Terraform Cloud run ID", "example": "run-1234567890", "type": "string" }, "token": { "description": "Terraform Cloud token", "example": "{{.variables.terraform_cloud_token}}", "type": "string" }, "type": { "description": "Provider type", "enum": [ "terraformCloudRun" ], "type": "string" } }, "required": [ "type", "address", "token", "runId" ], "type": "object" }, "TestRunnerJobAgentConfig": { "properties": { "delaySeconds": { "description": "Delay in seconds before resolving the job.", "format": "int", "type": "integer" }, "message": { "description": "Optional message to include in the job output.", "type": "string" }, "status": { "description": "Final status to set (e.g. \"successful\", \"failure\").", "type": "string" } }, "type": "object" }, "UserApprovalRecord": { "properties": { "createdAt": { "type": "string" }, "environmentId": { "type": "string" }, "reason": { "type": "string" }, "status": { "$ref": "#/components/schemas/ApprovalStatus" }, "userId": { "type": "string" }, "versionId": { "type": "string" } }, "required": [ "userId", "versionId", "environmentId", "status", "createdAt" ], "type": "object" }, "Value": { "oneOf": [ { "$ref": "#/components/schemas/LiteralValue" }, { "$ref": "#/components/schemas/ReferenceValue" }, { "$ref": "#/components/schemas/SensitiveValue" } ] }, "VerificationMeasurement": { "properties": { "data": { "additionalProperties": true, "description": "Raw measurement data", "type": "object" }, "measuredAt": { "description": "When measurement was taken", "format": "date-time", "type": "string" }, "message": { "description": "Measurement result message", "type": "string" }, "status": { "$ref": "#/components/schemas/VerificationMeasurementStatus" } }, "required": [ "status", "measuredAt" ], "type": "object" }, "VerificationMeasurementStatus": { "description": "Status of a verification measurement", "enum": [ "passed", "failed", "inconclusive" ], "type": "string" }, "VerificationMetricSpec": { "properties": { "count": { "description": "Number of measurements to take", "minimum": 1, "type": "integer" }, "failureCondition": { "description": "CEL expression to evaluate measurement failure (e.g., \"result.statusCode == 500\"), if not provided, a failure is just the opposite of the success condition", "example": "result.statusCode == 500", "type": "string" }, "failureThreshold": { "default": 0, "description": "Stop after this many consecutive failures (0 = no limit)", "type": "integer" }, "intervalSeconds": { "description": "Interval between measurements in seconds", "example": 30, "format": "int32", "minimum": 1, "type": "integer" }, "name": { "description": "Name of the verification metric", "type": "string" }, "provider": { "$ref": "#/components/schemas/MetricProvider" }, "successCondition": { "description": "CEL expression to evaluate measurement success (e.g., \"result.statusCode == 200\")", "example": "result.statusCode == 200", "type": "string" }, "successThreshold": { "description": "Minimum number of consecutive successful measurements required to consider the metric successful", "example": 0, "type": "integer" } }, "required": [ "name", "intervalSeconds", "count", "provider", "successCondition" ], "type": "object" }, "VerificationMetricStatus": { "allOf": [ { "$ref": "#/components/schemas/VerificationMetricSpec" }, { "properties": { "measurements": { "description": "Individual verification measurements taken for this metric", "items": { "$ref": "#/components/schemas/VerificationMeasurement" }, "type": "array" } }, "required": [ "measurements" ], "type": "object" } ] }, "VerificationRule": { "properties": { "metrics": { "description": "Metrics to verify", "items": { "$ref": "#/components/schemas/VerificationMetricSpec" }, "minItems": 1, "type": "array" }, "triggerOn": { "default": "jobSuccess", "description": "When to trigger verification", "enum": [ "jobCreated", "jobStarted", "jobSuccess", "jobFailure" ], "type": "string" } }, "required": [ "metrics" ], "type": "object" }, "VersionCooldownRule": { "properties": { "intervalSeconds": { "description": "Minimum time in seconds that must pass since the currently deployed (or in-progress) version was created before allowing another deployment. This enables batching of frequent upstream releases into periodic deployments.", "format": "int32", "minimum": 0, "type": "integer" } }, "required": [ "intervalSeconds" ], "type": "object" }, "VersionSelectorRule": { "properties": { "description": { "description": "Human-readable description of what this version selector does. Example: \"Only deploy v2.x versions to staging environments\"", "type": "string" }, "selector": { "$ref": "#/components/schemas/Selector" } }, "required": [ "selector" ], "type": "object" }, "VersionSummary": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "tag": { "type": "string" } }, "required": [ "id", "tag", "name" ], "type": "object" }, "Workflow": { "properties": { "id": { "type": "string" }, "inputs": { "items": { "$ref": "#/components/schemas/WorkflowInput" }, "type": "array" }, "jobs": { "items": { "$ref": "#/components/schemas/WorkflowJobTemplate" }, "type": "array" }, "name": { "type": "string" } }, "required": [ "id", "name", "inputs", "jobs" ], "type": "object" }, "WorkflowArrayInput": { "oneOf": [ { "$ref": "#/components/schemas/WorkflowManualArrayInput" }, { "$ref": "#/components/schemas/WorkflowSelectorArrayInput" } ] }, "WorkflowBooleanInput": { "properties": { "default": { "type": "boolean" }, "key": { "type": "string" }, "type": { "enum": [ "boolean" ], "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "WorkflowInput": { "oneOf": [ { "$ref": "#/components/schemas/WorkflowStringInput" }, { "$ref": "#/components/schemas/WorkflowNumberInput" }, { "$ref": "#/components/schemas/WorkflowBooleanInput" }, { "$ref": "#/components/schemas/WorkflowArrayInput" }, { "$ref": "#/components/schemas/WorkflowObjectInput" } ] }, "WorkflowJob": { "properties": { "config": { "additionalProperties": true, "description": "Configuration for the job agent", "type": "object" }, "id": { "type": "string" }, "index": { "type": "integer" }, "ref": { "description": "Reference to the job agent", "type": "string" }, "workflowRunId": { "type": "string" } }, "required": [ "id", "workflowRunId", "index", "ref", "config" ], "type": "object" }, "WorkflowJobAgentConfig": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "id": { "type": "string" } }, "required": [ "id", "config" ], "type": "object" }, "WorkflowJobMatrix": { "additionalProperties": { "oneOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "string" } ] }, "type": "object" }, "WorkflowJobTemplate": { "properties": { "config": { "additionalProperties": true, "description": "Configuration for the job agent", "type": "object" }, "id": { "type": "string" }, "if": { "description": "CEL expression to determine if the job should run", "type": "string" }, "matrix": { "$ref": "#/components/schemas/WorkflowJobMatrix" }, "name": { "type": "string" }, "ref": { "description": "Reference to the job agent", "type": "string" } }, "required": [ "id", "name", "ref", "config" ], "type": "object" }, "WorkflowJobWithJobs": { "allOf": [ { "$ref": "#/components/schemas/WorkflowJob" }, { "properties": { "jobs": { "items": { "$ref": "#/components/schemas/Job" }, "type": "array" } }, "required": [ "jobs" ], "type": "object" } ] }, "WorkflowManualArrayInput": { "properties": { "default": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "key": { "type": "string" }, "type": { "enum": [ "array" ], "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "WorkflowNumberInput": { "properties": { "default": { "type": "number" }, "key": { "type": "string" }, "type": { "enum": [ "number" ], "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "WorkflowObjectInput": { "properties": { "default": { "additionalProperties": true, "type": "object" }, "key": { "type": "string" }, "type": { "enum": [ "object" ], "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "WorkflowRun": { "properties": { "id": { "type": "string" }, "inputs": { "additionalProperties": true, "type": "object" }, "workflowId": { "type": "string" } }, "required": [ "id", "workflowId", "inputs" ], "type": "object" }, "WorkflowRunWithJobs": { "allOf": [ { "$ref": "#/components/schemas/WorkflowRun" }, { "properties": { "jobs": { "items": { "$ref": "#/components/schemas/WorkflowJobWithJobs" }, "type": "array" } }, "required": [ "jobs" ], "type": "object" } ] }, "WorkflowSelectorArrayInput": { "properties": { "key": { "type": "string" }, "selector": { "properties": { "default": { "$ref": "#/components/schemas/Selector" }, "entityType": { "enum": [ "resource", "environment", "deployment" ], "type": "string" } }, "required": [ "entityType" ], "type": "object" }, "type": { "enum": [ "array" ], "type": "string" } }, "required": [ "key", "type", "selector" ], "type": "object" }, "WorkflowStringInput": { "properties": { "default": { "type": "string" }, "key": { "type": "string" }, "type": { "enum": [ "string" ], "type": "string" } }, "required": [ "key", "type" ], "type": "object" } } }, "info": { "description": "OpenAPI schemas for workspace engine protobuf messages", "title": "Workspace Engine API", "version": "1.0.0" }, "openapi": "3.0.0", "paths": { "/v1/validate/resource-selector": { "post": { "operationId": "validateResourceSelector", "requestBody": { "content": { "application/json": { "schema": { "properties": { "resourceSelector": { "$ref": "#/components/schemas/Selector" } }, "type": "object" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "errors": { "items": { "type": "string" }, "type": "array" }, "valid": { "type": "boolean" } }, "required": [ "valid", "errors" ], "type": "object" } } }, "description": "The validated resource selector" } }, "summary": "Validate a resource selector" } }, "/v1/workspaces": { "get": { "description": "Returns a list of workspace that are in memory. These could be inactive.", "operationId": "listWorkspaceIds", "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "workspaceIds": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } } }, "description": "A list of workspace IDs" } }, "summary": "List workspace IDs" } }, "/v1/workspaces/{workspaceId}/deployment-versions/{versionId}/jobs-list": { "get": { "description": "Returns jobs grouped by environment and release target for a deployment version.", "operationId": "getDeploymentVersionJobsList", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment version", "in": "path", "name": "versionId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "properties": { "environment": { "$ref": "#/components/schemas/Environment" }, "releaseTargets": { "items": { "properties": { "deployment": { "$ref": "#/components/schemas/Deployment" }, "deploymentId": { "type": "string" }, "environment": { "$ref": "#/components/schemas/Environment" }, "environmentId": { "type": "string" }, "id": { "type": "string" }, "jobs": { "items": { "properties": { "createdAt": { "format": "date-time", "type": "string" }, "externalId": { "type": "string" }, "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object" }, "status": { "$ref": "#/components/schemas/JobStatus" } }, "required": [ "id", "createdAt", "status", "metadata" ], "type": "object" }, "type": "array" }, "resource": { "$ref": "#/components/schemas/Resource" }, "resourceId": { "type": "string" } }, "required": [ "id", "resourceId", "environmentId", "deploymentId", "environment", "deployment", "resource", "jobs" ], "type": "object" }, "type": "array" } }, "required": [ "environment", "releaseTargets" ], "type": "object" }, "type": "array" } } }, "description": "Jobs list grouped by environment and release target" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get deployment version jobs list" } }, "/v1/workspaces/{workspaceId}/deployments": { "get": { "description": "Returns a paginated list of deployments for a workspace.", "operationId": "listDeployments", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/DeploymentAndSystem" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List deployments" } }, "/v1/workspaces/{workspaceId}/deployments/{deploymentId}": { "get": { "description": "Returns a specific deployment by ID.", "operationId": "getDeployment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "path", "name": "deploymentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeploymentWithVariables" } } }, "description": "The requested deployment" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get deployment" } }, "/v1/workspaces/{workspaceId}/deployments/{deploymentId}/policies": { "get": { "description": "Returns a list of resolved policies for a deployment.", "operationId": "getPoliciesForDeployment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "path", "name": "deploymentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ResolvedPolicy" }, "type": "array" } }, "required": [ "items" ], "type": "object" } } }, "description": "A list of resolved policies" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get policies for a deployment" } }, "/v1/workspaces/{workspaceId}/deployments/{deploymentId}/release-targets": { "get": { "description": "Returns a list of release targets for a deployment.", "operationId": "getReleaseTargetsForDeployment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "path", "name": "deploymentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } }, { "description": "Filter by resource name", "in": "query", "name": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ReleaseTargetSummary" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release targets for a deployment" } }, "/v1/workspaces/{workspaceId}/deployments/{deploymentId}/resources": { "get": { "description": "Returns a paginated list of resources for deployment {deploymentId}.", "operationId": "getDeploymentResources", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "path", "name": "deploymentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Resource" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get resources for a deployment" } }, "/v1/workspaces/{workspaceId}/deployments/{deploymentId}/versions": { "get": { "description": "Returns a list of releases for a deployment.", "operationId": "getVersionsForDeployment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "path", "name": "deploymentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/DeploymentVersion" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get versions for a deployment" } }, "/v1/workspaces/{workspaceId}/deploymentversions/{deploymentVersionId}": { "get": { "description": "Returns a deployment version by ID.", "operationId": "getDeploymentVersion", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment version", "in": "path", "name": "deploymentVersionId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeploymentVersion" } } }, "description": "OK response" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get deployment version" } }, "/v1/workspaces/{workspaceId}/entities/{relatableEntityType}/{entityId}/relations": { "get": { "description": "Returns all entities related to the specified entity (deployment, environment, or resource) based on relationship rules. Relationships are grouped by relationship reference.", "operationId": "getRelatedEntities", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/relatableEntityType" }, { "description": "ID of the entity", "in": "path", "name": "entityId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "relations": { "additionalProperties": { "items": { "$ref": "#/components/schemas/EntityRelation" }, "type": "array" }, "type": "object" } }, "type": "object" } } }, "description": "Related entities grouped by relationship reference" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get related entities for a given entity" } }, "/v1/workspaces/{workspaceId}/environments": { "get": { "description": "Returns a list of environments for a workspace.", "operationId": "listEnvironments", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Environment" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "A list of environments" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List environments" } }, "/v1/workspaces/{workspaceId}/environments/{environmentId}": { "get": { "description": "Returns a specific environment by ID.", "operationId": "getEnvironment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the environment", "in": "path", "name": "environmentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Environment" } } }, "description": "The requested environment" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get environment" } }, "/v1/workspaces/{workspaceId}/environments/{environmentId}/release-targets": { "get": { "description": "Returns a list of release targets for an environment.", "operationId": "getReleaseTargetsForEnvironment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the environment", "in": "path", "name": "environmentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ReleaseTargetWithState" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release targets for an environment" } }, "/v1/workspaces/{workspaceId}/environments/{environmentId}/resources": { "get": { "description": "Returns a paginated list of resources for environment {environmentId}.", "operationId": "getEnvironmentResources", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the environment", "in": "path", "name": "environmentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Resource" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get resources for an environment" } }, "/v1/workspaces/{workspaceId}/github-entities/{installationId}": { "get": { "description": "Returns a GitHub entity by installation ID.", "operationId": "getGitHubEntityByInstallationId", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Installation ID of the GitHub entity", "in": "path", "name": "installationId", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GithubEntity" } } }, "description": "OK response" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get GitHub entity by installation ID" } }, "/v1/workspaces/{workspaceId}/job-agents": { "get": { "description": "Returns a list of job agents.", "operationId": "getJobAgents", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/JobAgent" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get job agents" } }, "/v1/workspaces/{workspaceId}/job-agents/{jobAgentId}": { "get": { "description": "Returns a specific job agent by ID.", "operationId": "getJobAgent", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the job agent", "in": "path", "name": "jobAgentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobAgent" } } }, "description": "The requested job agent" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get job agent" } }, "/v1/workspaces/{workspaceId}/job-agents/{jobAgentId}/deployments": { "get": { "description": "Returns a list of deployments for a job agent.", "operationId": "getDeploymentsForJobAgent", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the job agent", "in": "path", "name": "jobAgentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Deployment" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get deployments for a job agent" } }, "/v1/workspaces/{workspaceId}/job-agents/{jobAgentId}/jobs": { "get": { "description": "Returns a list of jobs for a job agent.", "operationId": "getJobsForJobAgent", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the job agent", "in": "path", "name": "jobAgentId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Job" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get jobs for a job agent" } }, "/v1/workspaces/{workspaceId}/jobs": { "get": { "description": "Returns a list of jobs.", "operationId": "getJobs", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } }, { "description": "ID of the resource", "in": "query", "name": "resourceId", "required": false, "schema": { "type": "string" } }, { "description": "ID of the environment", "in": "query", "name": "environmentId", "required": false, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "query", "name": "deploymentId", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/JobWithRelease" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List jobs" } }, "/v1/workspaces/{workspaceId}/jobs/{jobId}": { "get": { "description": "Returns a specific job by ID.", "operationId": "getJob", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the job", "in": "path", "name": "jobId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Job" } } }, "description": "Get job" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get job" } }, "/v1/workspaces/{workspaceId}/jobs/{jobId}/with-release": { "get": { "description": "Returns a specific job by ID with its release.", "operationId": "getJobWithRelease", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the job", "in": "path", "name": "jobId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobWithRelease" } } }, "description": "Get job with release" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get job with release" } }, "/v1/workspaces/{workspaceId}/policies": { "get": { "description": "Returns a list of policies for workspace {workspaceId}.", "operationId": "listPolicies", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "policies": { "items": { "$ref": "#/components/schemas/Policy" }, "type": "array" } }, "type": "object" } } }, "description": "A list of policies" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List policies" } }, "/v1/workspaces/{workspaceId}/policies/evaluate": { "post": { "description": "Evaluates all policies for a workspace.", "operationId": "evaluatePolicies", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EvaluationScope" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "decision": { "$ref": "#/components/schemas/DeployDecision" } }, "type": "object" } } }, "description": "OK response" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Evaluate policies" } }, "/v1/workspaces/{workspaceId}/policies/{policyId}": { "get": { "description": "Returns a specific policy by ID.", "operationId": "getPolicy", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the policy", "in": "path", "name": "policyId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } } }, "description": "The requested policy" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get policy" } }, "/v1/workspaces/{workspaceId}/policies/{policyId}/release-targets": { "get": { "description": "Returns a list of release targets for a policy {policyId}.", "operationId": "getReleaseTargetsForPolicy", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the policy", "in": "path", "name": "policyId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "releaseTargets": { "items": { "$ref": "#/components/schemas/ReleaseTarget" }, "type": "array" } }, "type": "object" } } }, "description": "A list of release targets" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release targets for a policy" } }, "/v1/workspaces/{workspaceId}/policies/{policyId}/rules/{ruleId}": { "get": { "description": "Returns a specific rule by ID.", "operationId": "getRule", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the policy", "in": "path", "name": "policyId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the rule", "in": "path", "name": "ruleId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyRule" } } }, "description": "OK response" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get rule" } }, "/v1/workspaces/{workspaceId}/policy-skips": { "get": { "description": "Returns a list of policy skips for workspace {workspaceId}.", "operationId": "listPolicySkips", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "skips": { "items": { "$ref": "#/components/schemas/PolicySkip" }, "type": "array" } }, "type": "object" } } }, "description": "A list of policy skips" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List policy skips for a workspace" } }, "/v1/workspaces/{workspaceId}/policy-skips/environment/{environmentId}/version/{deploymentVersionId}": { "get": { "description": "Returns a list of policy skips for an environment and version.", "operationId": "getPolicySkipsForEnvironmentAndVersion", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the environment", "in": "path", "name": "environmentId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment version", "in": "path", "name": "deploymentVersionId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/PolicySkip" }, "type": "array" } }, "type": "object" } } }, "description": "A list of policy skips" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get policy skips for an environment and version" } }, "/v1/workspaces/{workspaceId}/policy-skips/{policySkipId}": { "get": { "description": "Returns a specific policy skip by ID.", "operationId": "getPolicySkip", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Policy skip ID", "in": "path", "name": "policySkipId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicySkip" } } }, "description": "The requested policy skip" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get policy skip by ID" } }, "/v1/workspaces/{workspaceId}/relationship-rules": { "get": { "description": "Returns all relationship rules for the specified workspace.", "operationId": "getRelationshipRules", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/RelationshipRule" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get relationship rules for a given workspace" } }, "/v1/workspaces/{workspaceId}/relationship-rules/{relationshipRuleId}": { "get": { "operationId": "getRelationshipRule", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the relationship rule", "in": "path", "name": "relationshipRuleId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RelationshipRule" } } }, "description": "OK response" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get relationship rule" } }, "/v1/workspaces/{workspaceId}/release-targets/evaluate": { "post": { "description": "Evaluates all policies and rules that apply to a given release target and returns the evaluation results.", "operationId": "evaluateReleaseTarget", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EvaluateReleaseTargetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "decision": { "$ref": "#/components/schemas/DeployDecision" }, "policiesEvaluated": { "description": "The number of policies evaluated", "type": "number" } } } } }, "description": "Policy evaluation results for the release target" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Evaluate policies for a release target" } }, "/v1/workspaces/{workspaceId}/release-targets/resource-preview": { "post": { "description": "Simulates which release targets would be created if the given resource were added to the workspace. This is a dry-run endpoint — no resources or release targets are actually created.", "operationId": "previewReleaseTargetsForResource", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourcePreviewRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ReleaseTargetPreview" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" } }, "summary": "Preview release targets for a resource" } }, "/v1/workspaces/{workspaceId}/release-targets/{releaseTargetKey}/desired-release": { "get": { "description": "Returns the desired release for a release target {releaseTargetKey}.", "operationId": "getReleaseTargetDesiredRelease", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Key of the release target", "in": "path", "name": "releaseTargetKey", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "desiredRelease": { "$ref": "#/components/schemas/Release" } } } } }, "description": "The desired release for the release target" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get the desired release for a release target" } }, "/v1/workspaces/{workspaceId}/release-targets/{releaseTargetKey}/jobs": { "get": { "description": "Returns a list of jobs for a release target {releaseTargetKey}.", "operationId": "getJobsForReleaseTarget", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Key of the release target", "in": "path", "name": "releaseTargetKey", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } }, { "description": "CEL expression to filter the results", "in": "query", "name": "cel", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Job" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get jobs for a release target" } }, "/v1/workspaces/{workspaceId}/release-targets/{releaseTargetKey}/policies": { "get": { "description": "Returns a list of policies for a release target {releaseTargetId}.", "operationId": "getPoliciesForReleaseTarget", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Key of the release target", "in": "path", "name": "releaseTargetKey", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "policies": { "items": { "$ref": "#/components/schemas/Policy" }, "type": "array" } }, "type": "object" } } }, "description": "A list of policies" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get policies for a release target" } }, "/v1/workspaces/{workspaceId}/release-targets/{releaseTargetKey}/state": { "get": { "description": "Returns the state for a release target {releaseTargetKey}.", "operationId": "getReleaseTargetState", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Key of the release target", "in": "path", "name": "releaseTargetKey", "required": true, "schema": { "type": "string" } }, { "description": "Whether to bypass the cache", "in": "query", "name": "bypassCache", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReleaseTargetState" } } }, "description": "The state for the release target" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get the state for a release target" } }, "/v1/workspaces/{workspaceId}/releases/{releaseId}": { "get": { "description": "Returns a specific release by ID.", "operationId": "getRelease", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the release", "in": "path", "name": "releaseId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Release" } } }, "description": "The requested release" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release" } }, "/v1/workspaces/{workspaceId}/releases/{releaseId}/verifications": { "get": { "description": "Returns all verifications for jobs belonging to this release.", "operationId": "getReleaseVerifications", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the release", "in": "path", "name": "releaseId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/JobVerification" }, "type": "array" } } }, "description": "List of verifications for the release" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release verifications" } }, "/v1/workspaces/{workspaceId}/resource-providers": { "get": { "operationId": "getResourceProviders", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ResourceProvider" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" } }, "summary": "Get all resource providers" } }, "/v1/workspaces/{workspaceId}/resource-providers/cache-batch": { "post": { "description": "Stores resources in memory and returns a batch ID. The batch is processed when a corresponding Kafka event is received. Uses Ristretto cache with 5-minute TTL.", "operationId": "cacheBatch", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "providerId": { "description": "The ID of the resource provider", "type": "string" }, "resources": { "description": "Array of resources to cache", "items": { "$ref": "#/components/schemas/Resource" }, "type": "array" } }, "required": [ "providerId", "resources" ], "type": "object" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "batchId": { "description": "Unique ID for this cached batch", "type": "string" }, "resourceCount": { "description": "Number of resources cached", "type": "integer" } }, "type": "object" } } }, "description": "Batch cached successfully" } }, "summary": "Cache a large resource batch for deferred processing" } }, "/v1/workspaces/{workspaceId}/resource-providers/name/{name}": { "get": { "operationId": "getResourceProviderByName", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Name of the resource provider", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceProvider" } } }, "description": "OK response" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get a resource provider by name" } }, "/v1/workspaces/{workspaceId}/resources/kinds": { "get": { "description": "Returns a list of all resource kinds in a workspace.", "operationId": "getKindsForWorkspace", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "type": "string" }, "type": "array" } } }, "description": "The requested kinds" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get kinds for a workspace" } }, "/v1/workspaces/{workspaceId}/resources/query": { "post": { "description": "Returns paginated resources that match the provided CEL expression. Use the \"resource\" variable in your expression to access resource properties.", "operationId": "queryResources", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "filter": { "$ref": "#/components/schemas/Selector" } }, "type": "object" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Resource" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" } }, "summary": "Query resources with CEL expression" } }, "/v1/workspaces/{workspaceId}/resources/{resourceIdentifier}": { "get": { "description": "Returns a specific resource by its identifier.", "operationId": "getResourceByIdentifier", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Identifier of the resource", "in": "path", "name": "resourceIdentifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Resource" } } }, "description": "The requested resource" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get resource by identifier" } }, "/v1/workspaces/{workspaceId}/resources/{resourceIdentifier}/deployments": { "get": { "description": "Returns a paginated list of deployments that match the given resource.", "operationId": "getDeploymentsForResource", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Identifier of the resource", "in": "path", "name": "resourceIdentifier", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Deployment" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get deployments for a resource" } }, "/v1/workspaces/{workspaceId}/resources/{resourceIdentifier}/relationships": { "get": { "description": "Returns all relationships for the specified resource.", "operationId": "getRelationshipsForResource", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Identifier of the resource", "in": "path", "name": "resourceIdentifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": { "items": { "$ref": "#/components/schemas/EntityRelation" }, "type": "array" }, "type": "object" } } }, "description": "The requested relationships" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get relationships for a resource" } }, "/v1/workspaces/{workspaceId}/resources/{resourceIdentifier}/release-targets": { "get": { "description": "Returns a list of release targets for a resource.", "operationId": "getReleaseTargetsForResource", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Identifier of the resource", "in": "path", "name": "resourceIdentifier", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ReleaseTargetWithState" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release targets for a resource" } }, "/v1/workspaces/{workspaceId}/resources/{resourceIdentifier}/release-targets/deployment/{deploymentId}": { "get": { "description": "Returns a release target for a resource in a deployment.", "operationId": "getReleaseTargetForResourceInDeployment", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Identifier of the resource", "in": "path", "name": "resourceIdentifier", "required": true, "schema": { "type": "string" } }, { "description": "ID of the deployment", "in": "path", "name": "deploymentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReleaseTarget" } } }, "description": "The requested release target" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get release target for a resource in a deployment" } }, "/v1/workspaces/{workspaceId}/resources/{resourceIdentifier}/variables": { "get": { "description": "Returns a list of variables for a resource", "operationId": "getVariablesForResource", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Identifier of the resource", "in": "path", "name": "resourceIdentifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ResourceVariable" }, "type": "array" } } }, "description": "The requested variables" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get variables for a resource" } }, "/v1/workspaces/{workspaceId}/status": { "get": { "description": "Returns the status of the engine.", "operationId": "getEngineStatus", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "healthy": { "type": "boolean" }, "message": { "type": "string" } }, "type": "object" } } }, "description": "The status of the engine" } }, "summary": "Get engine status" } }, "/v1/workspaces/{workspaceId}/systems": { "get": { "description": "Returns a list of systems for a workspace.", "operationId": "listSystems", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/System" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "A list of systems" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List systems" } }, "/v1/workspaces/{workspaceId}/systems/{systemId}": { "get": { "description": "Returns a specific system by ID.", "operationId": "getSystem", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the system", "in": "path", "name": "systemId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "deployments": { "description": "Deployments associated with the system", "items": { "$ref": "#/components/schemas/Deployment" }, "type": "array" }, "environments": { "description": "Environments associated with the system", "items": { "$ref": "#/components/schemas/Environment" }, "type": "array" }, "system": { "$ref": "#/components/schemas/System" } }, "required": [ "system", "environments", "deployments" ], "type": "object" } } }, "description": "The requested system with its environments and deployments" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get system" } }, "/v1/workspaces/{workspaceId}/workflows": { "get": { "description": "Returns a list of workflows.", "operationId": "listWorkflows", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/Workflow" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "List workflows" } }, "/v1/workspaces/{workspaceId}/workflows/{workflowId}": { "get": { "description": "Gets a workflow by ID.", "operationId": "getWorkflow", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the workflow", "in": "path", "name": "workflowId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workflow" } } }, "description": "Get workflow" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get a workflow" } }, "/v1/workspaces/{workspaceId}/workflows/{workflowId}/runs": { "get": { "description": "Gets all workflow runs for a workflow by ID.", "operationId": "getWorkflowRuns", "parameters": [ { "description": "ID of the workspace", "in": "path", "name": "workspaceId", "required": true, "schema": { "type": "string" } }, { "description": "ID of the workflow", "in": "path", "name": "workflowId", "required": true, "schema": { "type": "string" } }, { "description": "Maximum number of items to return", "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 1000, "minimum": 1, "type": "integer" } }, { "description": "Number of items to skip", "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "items": { "items": { "$ref": "#/components/schemas/WorkflowRunWithJobs" }, "type": "array" }, "limit": { "description": "Maximum number of items returned", "type": "integer" }, "offset": { "description": "Number of items skipped", "type": "integer" }, "total": { "description": "Total number of items available", "type": "integer" } }, "required": [ "items", "total", "limit", "offset" ], "type": "object" } } }, "description": "Paginated list of items" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Invalid request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Resource not found" } }, "summary": "Get all workflow runs for a workflow" } } } }